Compare commits

..

20 Commits

Author SHA1 Message Date
Mario Fetka 0823ec1137 Bump version to 6.0 alpha6 2026-07-07 18:44:21 +02:00
Mario Fetka 1c4ebcccd1 Restore KF6 single instance behavior 2026-07-07 18:40:15 +02:00
Mario Fetka 9fd7e99274 Bump version to 6.0 alpha5 2026-07-06 13:58:09 +02:00
Mario Fetka bf567146d8 Clean up KF6 chat window warnings 2026-07-06 13:51:57 +02:00
Mario Fetka 3bade98d2f Harden address book updates for Escargot 2026-07-06 13:38:43 +02:00
Mario Fetka bd03359d79 Bump version to 6.0 alpha4 2026-07-06 13:21:16 +02:00
Mario Fetka 89b4218853 Handle missing Escargot profile URL 2026-07-06 13:14:56 +02:00
Mario Fetka f9f479588f Fix Escargot privacy mode mapping 2026-07-06 12:40:45 +02:00
Mario Fetka 40e81af6c6 Keep Escargot login alive without storage profile 2026-07-06 11:48:10 +02:00
Mario Fetka 10db33e21e Bump version to 6.0 alpha3 2026-07-06 09:46:58 +02:00
Mario Fetka 78cb2bc641 Port isf-qt to giflib 5 and clean build warnings 2026-07-06 09:37:59 +02:00
Mario Fetka 0c67ad480c Point roaming storage at Escargot service host 2026-07-06 08:05:06 +02:00
Mario Fetka 141bff5dd3 Bump version to 6.0 alpha2 2026-07-06 07:42:20 +02:00
Mario Fetka ae8f851b06 Fix KF6 runtime integration warnings 2026-07-06 07:37:58 +02:00
Mario Fetka 65d3f78a14 Fix contact list model teardown crash 2026-07-06 07:29:12 +02:00
Mario Fetka f2fbc7463b Port KMess to KF6 and Qt6 2026-07-06 07:16:41 +02:00
Mario Fetka 91626a9c87 Import release 2.0.6.2 2012-03-02 20:51:47 +00:00
Mario Fetka 858a70fe82 Import release 2.0.6.1 2011-02-17 09:46:29 +00:00
Mario Fetka 3200be221c Import release 2.0.6 2011-02-08 19:31:37 +00:00
Mario Fetka 452059cb18 Import release 2.0.5 2010-10-25 23:41:51 +00:00
334 changed files with 22022 additions and 19828 deletions
-16
View File
@@ -1,16 +0,0 @@
# Build files and dirs
build*
# KDevelop and other IDE-specific project files
*.kdev*
# Doxygen files
apidocs/
kmess.tag
# Mac stuff
.DS_Store
finkbuild
# ./configure script stuff
Makefile
-3
View File
@@ -1,3 +0,0 @@
[submodule "contrib/isf-qt"]
path = contrib/isf-qt
url = git://gitorious.org/kmess/libisf-qt.git
+11 -1
View File
@@ -66,6 +66,7 @@
Lauri Võsandi <v6sa@hotmail.com>
Mihkel Tõnnov <mihhkel@gmail.com>
Rivo Laks <rivolaks@hot.ee>
Timo Tambet <ttambet@gmail.com>
Finnish:
@@ -82,6 +83,8 @@
Andrea Blankenstijn <darkan9el@gmail.com>
Barthe Guillaume <gu_barthe@yahoo.fr>
Scias <shining.scias@gmail.com>
Grégory Bellier <gregory.bellier@gmail.com>
Anthony Rey <gnuk@mailoo.org>
Galician:
@@ -112,7 +115,7 @@
Japanese:
Daniel E. Moctezuma <shinsen27@gmail.com>
Daniel E. Moctezuma <dmoctezuma@kmess.org>
Korean:
@@ -245,6 +248,13 @@
- Internationalization fixes
- Drag'n'drop of images into display pictures
Francesco Nwokeka
- Now Listening toggle button above the contact list.
Timo Tambet <ttambet@gmail.com>
- Contact Changed and Group Changed notifications.
- Contact added user dialog tabbing
KMerlin <http://kmerlin.olsd.de/>
- Inspiration and assorted code
+86 -252
View File
@@ -1,267 +1,101 @@
PROJECT( kmess )
cmake_minimum_required(VERSION 3.16)
project(kmess VERSION 6.0.0 LANGUAGES C CXX)
#### System checks ####
find_package(ECM REQUIRED NO_MODULE)
set(CMAKE_MODULE_PATH
${CMAKE_MODULE_PATH}
${ECM_MODULE_PATH}
${CMAKE_CURRENT_SOURCE_DIR}/cmake)
# To add checks, see in one or more of these paths
# /usr/share/cmake/Modules
# /usr/share/kde4/apps/cmake/modules
# /usr/share/apps/cmake
set(BUILD_WITH_QT6 ON CACHE BOOL "Build against Qt 6" FORCE)
set(QT_DEFAULT_MAJOR_VERSION 6)
# Check for cmake, same as minimum for KDE 4.0.0
CMAKE_MINIMUM_REQUIRED( VERSION 2.4.5 )
include(KDEInstallDirs)
include(KDECMakeSettings)
include(KDECompilerSettings NO_POLICY_SCOPE)
# Check for KDE 4
FIND_PACKAGE( KDE4 REQUIRED )
INCLUDE( KDE4Defaults )
find_package(Qt6 REQUIRED COMPONENTS Core Core5Compat DBus Gui Multimedia Network Test WebEngineWidgets Widgets Xml)
find_package(KF6 REQUIRED COMPONENTS
Codecs
Completion
Config
ConfigWidgets
CoreAddons
Crash
DBusAddons
IdleTime
I18n
IconThemes
KIO
Notifications
NotifyConfig
Parts
Service
Solid
StatusNotifierItem
TextWidgets
WidgetsAddons
WindowSystem
Wallet
XmlGui
)
# Make sure the rest still works
IF( NOT KDE4_FOUND )
# The macro's MACRO_LOG_FEATURE, MACRO_OPTIONAL_FIND_PACKAGE, MACRO_BOOL_TO_01
# are part of the KDE cmake modules, so these can't be used now.
find_package(LibXml2 REQUIRED)
find_package(LibXslt REQUIRED)
find_package(GCrypt REQUIRED)
MESSAGE( FATAL_ERROR "\n"
" The KDE Development Platform was not found.\n"
" \n"
" You will need this package and the matching development package.\n"
" Usually the package names for this library are:\n"
" on Debian and Ubuntu: 'kdebase-runtime' and 'kdelibs5-dev'\n"
" on openSUSE: 'kdebase4-runtime' and 'libkde4-devel'\n"
" \n"
" Please refer to the KMess board for more info,\n"
" and specially to this guide: http://trac.kmess.org/wiki/Compiling%20KMess" )
ENDIF( NOT KDE4_FOUND )
set(ISFQT_IS_BUNDLED TRUE)
set(USE_BUNDLED_LIBRARIES ISFQT)
add_subdirectory(contrib/isf-qt)
# Check for libxml2
FIND_PACKAGE( LibXml2 )
MACRO_LOG_FEATURE( LIBXML2_FOUND "LibXML2" "Libraries used to develop XML-aware applications" "http://www.xmlsoft.org/" TRUE ""
"Required for the chat styles system.
* You will need this package and the matching development package: for example, 'libxml2' and 'libxml2-dev' or 'libxml2-devel'.
* Usually the package names for this library are:
on Debian and Ubuntu: 'libxml2' and 'libxml2-dev'
on openSUSE: 'libxml2' and 'libxml2-devel'
* Please refer to the KMess board for more info,
and specially to this guide: http://trac.kmess.org/wiki/Compiling%20KMess" )
option(KMESS_DISABLE_LIKEBACK "Disable the old LikeBack feedback UI" ON)
if(KMESS_DISABLE_LIKEBACK)
set(KMESS_DISABLE_LIKEBACK 1)
else()
set(KMESS_DISABLE_LIKEBACK 0)
endif()
# Check for libxslt
FIND_PACKAGE( LibXslt )
MACRO_LOG_FEATURE( LIBXSLT_FOUND "LibXSLT" "A library to transform XML into other formats" "http://www.xmlsoft.org/XSLT" TRUE ""
"Required for the chat styles system.
* Usually the package names for this library are:
on Debian and Ubuntu: 'libxslt' and 'libxslt1-dev'
on openSUSE: 'libxslt' and 'libxslt-devel'
* Please refer to the KMess board for more info,
and specially to this guide: http://trac.kmess.org/wiki/Compiling%20KMess" )
set(KMESS_VERSION "6.0_alpha6")
set(KMESS_ENABLE_DEBUG_OUTPUT 0)
set(KMESS_BUILT_DEBUGFULL FALSE)
set(HAVE_LIBISFQT 1)
set(HAVE_NEW_TRAY 1)
# Add cmake directory to the MODULE_PATH, so cmake can find GCrypt
SET( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} $ENV{CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake )
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# Check for GCrypt
FIND_PACKAGE( GCrypt )
IF( NOT GCRYPT_FOUND )
MACRO_LOG_FEATURE( GCRYPT_FOUND "GCrypt" "A library to encrypt messages with various cyphers" "http://www.gnupg.org/" TRUE ""
"It is required for the Live Messenger login process.
* Usually the package names for this library are:
on Debian and Ubuntu: 'libgcrypt' and 'libgcrypt11-dev'
on openSUSE: 'libgcrypt' and 'libgcrypt-devel'
on Fedora: 'gcrypt' and 'gcrypt-devel'
* Please refer to the KMess board for more info,
and specially to this guide: http://trac.kmess.org/wiki/Compiling%20KMess" )
ELSE()
MESSAGE( STATUS "Looking for GCrypt - found" )
ENDIF()
add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x050F00 -DQT_NO_URL_CAST_FROM_STRING)
# Check for XScreenSaver extension
OPTION( WANT_XSCREENSAVER "Build with X11 screensaver auto-away support" ON )
IF( WANT_XSCREENSAVER )
MACRO_BOOL_TO_01( X11_Xscreensaver_FOUND HAVE_XSCREENSAVER )
MACRO_OPTIONAL_FIND_PACKAGE(X11)
IF( X11_FOUND )
MACRO_LOG_FEATURE( X11_Xscreensaver_FOUND "XScreenSaver" "X11 extension used to check idle state" "" FALSE ""
"Required for the auto-away feature.
* Usually the package names for this library are:
on Debian and Ubuntu: 'libxss-dev'
on openSUSE: 'xorg-x11-libs'
* Please refer to the KMess board for more info,
and specially to this guide: http://trac.kmess.org/wiki/Compiling%20KMess" )
ELSE( X11_FOUND )
MESSAGE( STATUS "NOTE: The auto-away feature is not supported on this platform yet." )
ENDIF( X11_FOUND )
ENDIF( WANT_XSCREENSAVER )
# Compatibility variables kept for old subdirectory install rules while the
# source tree is being ported away from KDE4-era CMake.
set(BIN_INSTALL_DIR ${KDE_INSTALL_BINDIR})
set(CONFIG_INSTALL_DIR ${KDE_INSTALL_CONFDIR})
set(DATA_INSTALL_DIR ${KDE_INSTALL_DATADIR})
set(HTML_INSTALL_DIR ${KDE_INSTALL_DOCBUNDLEDIR})
set(ICON_INSTALL_DIR ${KDE_INSTALL_ICONDIR})
set(LOCALE_INSTALL_DIR ${KDE_INSTALL_LOCALEDIR})
set(PLUGIN_INSTALL_DIR ${KDE_INSTALL_PLUGINDIR})
set(SERVICES_INSTALL_DIR ${KDE_INSTALL_KSERVICESDIR})
set(SHARE_INSTALL_PREFIX ${KDE_INSTALL_DATADIR})
set(SOUND_INSTALL_DIR ${KDE_INSTALL_SOUNDDIR})
set(XDG_APPS_INSTALL_DIR ${KDE_INSTALL_APPDIR})
# Check for libkonq
# QUIET is to fix compiling on systems like Debian Lenny, which don't have FindLibKonq.cmake
# (for an optional feature, we don't want that to be fatal)
MACRO_OPTIONAL_FIND_PACKAGE( LibKonq QUIET )
MACRO_LOG_FEATURE( LIBKONQ_FOUND "LibKonq" "Integration with Konqueror context menu" "http://www.kde.org/" FALSE ""
"This is an optional feature.
* Usually the package names for this library are:
on Debian and Ubuntu: 'libkonq5' and 'libkonq5-dev'
on openSUSE: 'libkonq5' and 'libkonq-devel'
* Please refer to the KMess board for more info,
and specially to this guide: http://trac.kmess.org/wiki/Compiling%20KMess" )
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/cmake/config-kmess.h.in
${CMAKE_CURRENT_BINARY_DIR}/config-kmess.h)
# Check for libisf-qt
MACRO_OPTIONAL_FIND_PACKAGE( IsfQt QUIET )
MACRO_LOG_FEATURE( ISFQT_FOUND "LibISF-Qt" "Library to manage Microsoft's Mobile Ink" "http://www.kmess.org/" FALSE ""
"Support to send handwriting messages in a format compatible with Windows Live Messenger.
In absence of an installed isf-qt version, the bundled version will be compiled.")
MACRO_BOOL_TO_01( ISFQT_FOUND HAVE_LIBISFQT ) # For config-kmess.h.in
include_directories(
${CMAKE_CURRENT_BINARY_DIR}
${LIBXML2_INCLUDE_DIR}
${LIBXSLT_INCLUDE_DIR}
${GCRYPT_INCLUDE_DIRS}
)
# Check for KNotificationItem. KDE 4.3.1 and later have it integrated in kdelibs/experimental.
# It will be available by default in 4.4.
IF( ${KDE_VERSION} VERSION_LESS 4.3.70 ) # KDE trunk has a higher version number than this.
MACRO_OPTIONAL_FIND_PACKAGE(LibKNotificationItem-1)
MACRO_LOG_FEATURE( LIBKNOTIFICATIONITEM-1_FOUND "LibKNotificationItem-1" "The experimental new KDE systray library" "http://www.kde.org" FALSE ""
"LibKNotificationItem-1 is the experimental new KDE systray library. It will be included
by default in KDE 4.4 and is available for use in KDE 4.3.1 and above." )
MACRO_BOOL_TO_01( LIBKNOTIFICATIONITEM-1_FOUND HAVE_NEW_TRAY )
ELSE()
SET( HAVE_NEW_TRAY 1 )
ENDIF()
# Display the dependency collection results
MACRO_DISPLAY_FEATURE_LOG()
#### Configure build ####
INCLUDE( MacroLibrary )
INCLUDE( KDE4Defaults )
IF( NOT ISFQT_FOUND )
# isf-qt is not installed on the system.
# use the bundled version.
SET( ISFQT_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/contrib/isf-qt/include )
SET( ISFQT_LIBRARIES isf-qt )
SET( USE_BUNDLED_LIBRARIES ${USE_BUNDLED_LIBRARIES} ISFQT )
SET( HAVE_LIBISFQT 1 )
SET( ISFQT_FOUND TRUE )
ENDIF( NOT ISFQT_FOUND )
ADD_DEFINITIONS( ${QT_DEFINITIONS} ${KDE4_DEFINITIONS} )
INCLUDE_DIRECTORIES( ${KDE4_INCLUDES} ${KDE4_INCLUDE_DIR} ${QT_INCLUDES} ${LIBXML2_INCLUDE_DIR} )
#### Define the app version number ####
# Switch between the following two commands to force using a predefined version number
# EXECUTE_PROCESS( COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/cmake/get-git-version.sh OUTPUT_VARIABLE KMESS_VERSION )
SET( KMESS_VERSION "2.0.4" )
#### Define compiler flags ####
# Tune the debug build with even more flags
# also see FindKDE4Internal.cmake for more defaults
IF( CMAKE_COMPILER_IS_GNUCXX )
# skipped: -ansi -pendantic -Wfatal-errors -Wold-style-cast -Wconversion
SET( CMAKE_CXX_FLAGS_DEBUG "-O0 -g -Wall" )
SET( CMAKE_CXX_FLAGS_DEBUGFULL "-O0 -g3 -fno-inline -Wall -Woverloaded-virtual -Wsign-compare -Wundef" )
# the -fvisibility option makes symbols also visible to the KDE backtrace dumper, but
# the MinGW gcc doesn't seem to understand it well, so only add it if we're not on win32
IF( NOT WIN32 )
SET( CMAKE_CXX_FLAGS_DEBUGFULL "${CMAKE_CXX_FLAGS_DEBUGFULL} -fvisibility=default" )
ENDIF( NOT WIN32 )
ENDIF( CMAKE_COMPILER_IS_GNUCXX )
# Define the default build type
# Possible values:
# - none
# - release
# - debug
# - debugfull (even fewer optimisations)
# - relwithdebinfo (release with debug info)
# - minsizerel (minsize release)
# Uncomment the next line to always force building in full debug mode
# SET( CMAKE_BUILD_TYPE debugfull )
# Enable the KMess debug output when compiling a debug build
IF( CMAKE_BUILD_TYPE STREQUAL debugfull OR KMESS_DEBUG_OUTPUT EQUAL 1 )
SET( KMESS_ENABLE_DEBUG_OUTPUT "1" )
ELSE( CMAKE_BUILD_TYPE STREQUAL debugfull OR KMESS_DEBUG_OUTPUT EQUAL 1 )
SET( KMESS_ENABLE_DEBUG_OUTPUT "0" )
ENDIF( CMAKE_BUILD_TYPE STREQUAL debugfull OR KMESS_DEBUG_OUTPUT EQUAL 1 )
# Change symbol visibility, to obtain clearer KDE backtraces
SET( __KDE_HAVE_GCC_VISIBILITY 0 )
# Disable LikeBack if not needed
IF( KMESS_DISABLE_LIKEBACK EQUAL 1 )
SET( KMESS_DISABLE_LIKEBACK "1" )
ELSE( KMESS_DISABLE_LIKEBACK EQUAL 1 )
SET( KMESS_DISABLE_LIKEBACK "0" )
ENDIF( KMESS_DISABLE_LIKEBACK EQUAL 1 )
# Set a default installation path
IF( NOT CMAKE_INSTALL_PREFIX )
SET( CMAKE_INSTALL_PREFIX "/usr" )
ENDIF( NOT CMAKE_INSTALL_PREFIX )
IF( CMAKE_USE_CPACK EQUAL 1 )
MESSAGE( STATUS "Enabling the CPack package target..." )
# source: http://www.vtk.org/Wiki/CMake:Packaging_With_CPack
INCLUDE( InstallRequiredSystemLibraries )
# the installer will be named ${PACKAGENAME}-{VERSIONMAJOR}.{VERSIONMINOR}.{VERSIONPATCH}-win32.exe.
# the installer will say "Welcome to the ${INSTALL_DIRECTORY} Setup Wizard and install to ${INSTALL_DIRECTORY} too, and
# put the program in start menu under the ${INSTALL_DIRECTORY} name.
# it will ask if ${PACKAGENAME} should be put in PATH.
SET( CPACK_PACKAGE_NAME "KMess" )
SET( CPACK_PACKAGE_DESCRIPTION_SUMMARY "KMess (package description)" )
SET( CPACK_PACKAGE_VENDOR "The KMess team" )
SET( CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README" )
SET( CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING" )
SET( CPACK_PACKAGE_VERSION_MAJOR "1" )
SET( CPACK_PACKAGE_VERSION_MINOR "0" )
SET( CPACK_PACKAGE_VERSION_PATCH "0" )
SET( CPACK_PACKAGE_INSTALL_DIRECTORY "KMess" )
IF( WIN32 AND NOT UNIX )
# There is a bug in NSI that does not handle full unix paths properly. Make
# sure there is at least one set of four (4) backslashes.
SET( CPACK_GENERATOR "NSIS" )
SET( CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/data/icons\\\\hi32-app-kmess.png" )
SET( CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\kmess.exe" )
SET( CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} KMess (display name)" )
SET( CPACK_NSIS_HELP_LINK "http:\\\\\\\\kmess.org" )
SET( CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\kmess.org" )
SET( CPACK_NSIS_CONTACT "project@kmess.org" )
SET( CPACK_NSIS_MODIFY_PATH ON )
ELSE( WIN32 AND NOT UNIX )
SET( CPACK_STRIP_FILES "bin/kmess" )
SET( CPACK_SOURCE_STRIP_FILES "" )
ENDIF( WIN32 AND NOT UNIX )
SET( CPACK_PACKAGE_EXECUTABLES "kmess" "KMess" )
INCLUDE( CPack )
ENDIF( CMAKE_USE_CPACK EQUAL 1 )
#### Other settings ####
# Generate config-kmess.h
CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/config-kmess.h.in ${CMAKE_CURRENT_BINARY_DIR}/config-kmess.h )
INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR} )
# continue in directories
ADD_SUBDIRECTORY( po )
ADD_SUBDIRECTORY( data )
ADD_SUBDIRECTORY( doc )
ADD_SUBDIRECTORY( src )
IF( LIBKONQ_FOUND )
ADD_SUBDIRECTORY( src/utils/kmess-send )
ENDIF( LIBKONQ_FOUND )
IF( USE_BUNDLED_LIBRARIES MATCHES "ISFQT" )
ADD_SUBDIRECTORY( contrib/isf-qt )
ENDIF( )
# Also add the tests if compiling in development mode
IF( CMAKE_BUILD_TYPE STREQUAL debugfull AND KMESS_DEBUG_OUTPUT EQUAL 1 )
ADD_SUBDIRECTORY( tests )
ENDIF( CMAKE_BUILD_TYPE STREQUAL debugfull AND KMESS_DEBUG_OUTPUT EQUAL 1 )
add_subdirectory(po)
add_subdirectory(data)
add_subdirectory(src)
+165
View File
@@ -0,0 +1,165 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser 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
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.
+133 -1
View File
@@ -1,5 +1,133 @@
--- 2.0.6.2 released ---
2011-11-26 (Dmoctezuma)
* Follow Location redirects, MS seems to have moved some accounts
to other servers. (patch by Lekensteyn)
2011-04-12 (Sjors)
* Apply a patch by Francesco Nwokeka, fixing a part of #480 by moving
file transfer settings into its own tab in the settings screen.
* Include Phonon headers correctly.
2011-04-10 (Ruben)
* Fixed XML for DBus interface
2011-04-03 (Dmoctezuma)
* Updated email address.
2011-03-14 (Dmoctezuma)
* Updated Japanese translation.
2011-02-27 (Dmoctezuma)
* Updated Japanese translation.
2011-02-25 (Adam)
* Fix bug where KMess would fail to build on relwithdebinfo builds when
--enable-debug-output was set
--- 2.0.6.1 released ---
2011-02-16 (Adam)
* Fix yet another login bug caused because our initial profile data no
longer includes a language preference.
--- 2.0.6 released ---
2011-01-13 (Adam)
* Fix bug where KMess couldn't login due to badly formed URL commands.
2011-01-08 (Valerio)
* Fixed crash when taking any action in the Contact Added User dialog.
Also removed an unnecessary signal-bouncing slot.
* Fixed a dangling pointer issue when the Contact Added User dialog was
shown, closed and shown again.
2011-01-05 (Adam)
* Add new widget, FaderWidget, which smoothly fades between the initial view
and the contact list. Disable by setting NoFadeEffect to true under the
MainWindow section of kmessrc.
2011-01-02 (Pano)
* Merged an updated Japanese translation by Daniel E. Moctezuma.
* Merged an updated Spanish translation by Daniel E. Moctezuma.
* Merged an updated German translation.
2010-12-24 (Adam)
* Fix retrieval of roaming display picture.
2010-12-23 (Adam)
* Fix a problem where roaming service profile data was invalid.
2010-12-13 (Valerio)
* Fixed "Visit Link" context-menu icon in chat. Thanks to IRC's agostino for the
heads-up.
2010-11-16 (Adam)
* (Finally) merged in a modified patch by Timo Tambet that groups all
"contact added user" windows as tabs under a single dialog.
--- 2.0.5 released ---
2010-10-23 (Valerio)
* Added new chats to the log records, no need to logout to see the chat logs of
the current session anymore.
* Made the HTTP connection timer fix from yesterday to compile with Qt < 4.7.
* Fixed building with certain compiler configurations.
2010-10-22 (Valerio)
* Show user's display picture in chat by default.
* Fixed HTTP connection timers, now midnight and clock skews don't cause any
more the HTTP rate limiter to fail.
2010-10-16 (Valerio)
* Integrated Chat History with the Chat Window:
- added a menu item and toolbar action, showing a menu containing the current
tab's contacts;
- added a context menu entry in the Contacts Panel.
* Removed some unused code in ContactFrame.
* Fixed logging in with long passwords (17+ characters). The Live servers don't
accept those, hehehe.
2010-10-16 (Adam)
* Fix the parsing of offline IM messages.
2010-09-19 (Adam)
* Fix a signal issue in MsnNotificationConnection, thanks Timo Tambet
2010-09-10 (Pano)
* Merged an updated Traditional Chinese translation by Yen-chou Chen.
2010-09-03 (Adam)
* Fix a crash caused when the contacts widget was deleted twice in a chat window.
2010-09-02 (Sjors)
* Add <html> tag to status notification messages so HTML is stripped correctly
by knotify.
2010-08-13 (Pano)
* Merged an updated Estonian translation by Timo Tambet.
2010-08-13 (Pano)
* Merged an updated Hungarian translation by József Makay.
2010-08-11 (Adam)
* Merge modified patch by Timo Tambet that gives notifications for address
book changes (contact and group changes).
2010-08-05 (Adam)
* Bump version number to 2.0.5dev
2010-08-05 (Sjors)
* Made the SOAP request waiter its own object instead of a QTimer::singleShot
because now it can be stopped if logging in fails, fixing a crash.
2010-08-04 (Pano)
* Merged an updated French translation by Anthony Rey.
--- 2.0.4 released ---
2010-07-25 (Adam)
* Merge fix for ticket #524, thanks to Timo Tambert
* Fix ticket #524, thanks to Timo Tambet
2010-07-24 (Adam)
* Properly handle non-messenger Hotmail contacts that appear on our address book.
@@ -53,6 +181,10 @@
* Fixed the ability to drag'n'drop into the message editor a received Ink drawing, and an issue with
the Ink editor button when doing so.
2010-06-29 (Valerio)
* Added a class to autonomously manage the chat logs retrieval.
* Rewritten the Chat History dialog, now using a calendar to list dates with available chat logs.
2010-06-27 (Pano)
* Merged an updated Traditional Chinese translation by the Tryneeds-Chinese Translation Platform.
+1 -1
View File
@@ -5,7 +5,7 @@
#---------------------------------------------------------------------------
DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = KMess
PROJECT_NUMBER = 2.0.4
PROJECT_NUMBER = 2.0.6.2
OUTPUT_DIRECTORY = ./apidocs
CREATE_SUBDIRS = NO
OUTPUT_LANGUAGE = English
-6
View File
@@ -1,11 +1,5 @@
KMess Feature list
========================
- 2.0.4 -
New system tray icon when KMess is loaded onto KDE 4.4+.
Improved support for notifications on Mac.
Added a button on the contact list for quick "now listening" toggling.
Ability to drag and drop drawings into the editor to re-send them.
- 2.0.3 -
Setting your friendly name and personal message by clicking on their labels in the contact list.
A display of the unread email count in the system tray tooltip.
+75 -34
View File
@@ -1,42 +1,84 @@
Changes between KMess Git and 2.0.6.2:
--------------------------------------
- None yet
Changes between KMess 2.0.6.2 and 2.0.6.1:
------------------------------------------
- Follow redirects, fixing connection issue. Thanks to Lekensteyn.
- Moved file transfer settings into own tab.
- updated Japanese translation by Daniel E. Moctezuma.
Changes between KMess 2.0.6.1 and 2.0.6:
----------------------------------------
- fix bug where KMess couldn't login due to missing language preference information.
Changes between KMess 2.0.6 and 2.0.5:
--------------------------------------
- fix bug where KMess couldn't login due to badly formed URL commands.
- fixed crash when taking any action in the Contact Added User dialog.
- fixed a possible crash when using the Contact Added User dialog.
- Added a fading effect when switching between the initial view and the contact list.
- fixed retrieval of display pictures from online MSN storage.
- fixed a problem where roaming service profile data was invalid.
- fixed "Visit Link" context-menu icon in chat. Thanks to IRC's agostino.
- improved Contact Added User dialog with tabs. Thanks ti Timo Tambet.
- updated Japanese translation by Daniel E. Moctezuma.
- updated Spanish translation by Daniel E. Moctezuma.
- updated German translation.
Changes between KMess 2.0.5 and 2.0.4:
--------------------------------------
- added Chat History integration with the Chat Window, with a menu item, toolbar
action, and a context menu item.
- added KDE notifications for contact and group changes (Patch by Timo Tambet).
- fixed a crash due to changes by Microsoft in how Offline Messages are sent.
- fixed a possible crash during login.
- fixed a crash when closing a chat window.
- fixed logging in with long passwords (17+ characters). MSN cuts them to 16, hehehe.
- removed all HTML from KDE notifications to fix weird text cutting problems.
- updated French translation by Anthony Rey.
- updated Estonian translation by Timo Tambet.
- updated Hungarian translation by József Makay.
- updated Traditional Chinese translation by Yen-chou Chen.
Changes between KMess 2.0.4 and 2.0.3:
--------------------------------------
- added ability to drag and drop drawings into the message editor to be re-sent.
- added support for the new KDE 4.4+ system tray icon.
- added a toggle button for "now listening" to the contact list.
- added displaying the currently playing song above the contact list, even while appearing offline.
- added a tip text on the contact list's search bar (Patch by Timo Tambet).
- added support for a new ISF-Qt feature, PNG fortification, allowing to drag
and drop handwriting drawings into the message editor to be edited.
- added support for notifications on the Mac.
- added a toggle button for Now Listening to the contact list (Patch by Francesco Nwokeka).
- added Galician translation by Indalecio Freiría Santos.
- removed the "contact does not have you on their contact list" text from the tool tips,
as this feature is currently broken (the servers report incorrect data).
- fixed "contact added you" dialogs from appearing when they should not.
- fixed sending messages only containing whitespace.
- fixed pressing Enter to send a drawing worked even when nothing was in the drawing.
- fixed the ability to drag'n'drop into the message editor a received Ink drawing.
- fixed dimensions of the display picture in the contacts dock.
- fixed chat history box, now it respects the "Show contacts emails instead of friendly names" option.
- fixed ignoring non-messenger contacts, who are not supported by KMess 2.0.x .
- fixed retrieving display pictures from the server.
- fixed building KMess from Fedora 13.
- fixed compatibility with KDE 4.5 .
- fixed error at login when the user had a new display picture to download.
- fixed multiple copies of a single DP were appearing in the "set previous
display picture" dialog and the contact properties dialog.
- fixed bug in Now Listening when querying MPRIS-compatible media players.
- fixed account properties updating in some cases.
- fixed "Log in Automatically" option saving in some cases.
- fixed bug where the status was set to "Idle" upon waking up from sleep or disconnection.
- fixed the application icon under Windows and Mac.
- improved the contact list to be sorted by status, then alphabetically.
- improved notifications support on Mac.
- updated Traditional Chinese translation by Yen-chou Chen and the Tryneeds-Chinese Translation Platform.
- fixed invalid characters in contact frame tooltips.
- fixed "Contact Added User" dialog pop-ups, appearing for already added contacts.
- fixed the application icon resolution.
- fixed log in failure, due to a mismanaged remote display picture reception.
- fixed URL when retrieving display pictures from MSN.
- fixed saving account properties.
- fixed removal and blocking of contacts.
- fixed saving the automatic login option.
- fixed status changing bugs when disconnecting or waking up from sleep.
- improved compatibility with KDE 4.5.
- improved the Chat History dialog, now using a calendar to list dates with available chat logs.
- improved contact list sorting, now done by status, then alphabetically (Patch by dah_ at the boards).
- improved management of unknown contacts.
- improved widget sizes and behavior on the contact list.
- updated the system tray widget to the new KDE 4.3+ one.
- updated Japanese translation by Daniel E. Moctezuma.
- updated Brazilian Portuguese translation by Morris Arozi Moraes.
- updated French translation by Grégory Bellier.
- updated German translation.
- updated Dutch translation by Heimen Stoffels.
- updated Dutch translation by Heimen Stoffels.
- updated Japanese translation by Daniel E. Moctezuma.
- updated German translation by Panagiotis Papadopoulos.
- updated Catalan translation by Adrià Arrufat.
- updated Traditional Chinese translation by the Tryneeds-Chinese Translation Platform.
- updated French translation by Grégory Bellier.
- updated Brazilian Portuguese translation by Morris Arozi Moraes.
- updated Traditional Chinese translation by Yen-chou Chen.
Changes between KMess 2.0.3 and 2.0.2:
--------------------------------------
@@ -77,8 +119,7 @@ Changes between KMess 2.0.2 and 2.0.1:
Changes between KMess 2.0.1 and 2.0:
--------------------------------------
- added a "Log in automatically" checkbox to the initial view (patch by Camille Begue).
- added ability to open the chat history dialog when not connected
(patch by Camille Begue).
- added ability to open the chat history dialog when not connected (patch by Camille Begue).
- added Test Server support.
- added shortcut checking of added/edited emoticons for invalid characters.
- added usage of smooth pixmap scaling for display pictures in the contact list.
+11
View File
@@ -63,6 +63,17 @@ To build a TGZ package for Slackware, run:
Licensing
=========
We provide along with KMess some Oxygen icons which are usually bundled with Kopete.
They are released under LGPL 3.0 (see http://www.oxygen-icons.org/).
See COPYING_ICONS for full license text.
The remainder of KMess is released under the GPL2+ . See COPYING for full license text.
More Information
================
Executable → Regular
View File
+4 -1
View File
@@ -11,6 +11,9 @@
/* Define if debug output should be enabled */
#define KMESS_DEBUG ${KMESS_ENABLE_DEBUG_OUTPUT}
/* Define what the build type of KMess is */
#cmakedefine KMESS_BUILT_DEBUGFULL ${KMESS_BUILD_DEBUGFULL}
/* Define the fallback prefix */
#define KMESS_PREFIX "${CMAKE_INSTALL_PREFIX}"
@@ -24,4 +27,4 @@
#define KMESS_ENABLE_INK ${HAVE_LIBISFQT}
/* Define whether we have the new system tray */
#cmakedefine HAVE_NEW_TRAY
#cmakedefine HAVE_NEW_TRAY
Executable → Regular
+17 -6
View File
@@ -7,19 +7,30 @@ appver="`egrep 'SET.*KMESS_VERSION' CMakeLists.txt | sed -e 's/.*"\([^"]*\)".*/\
date="`date +%Y%m%d`"
# Make sure we have the right repository
if [ ! -f kmess.kdevelop ]; then
if [ ! -f kmess.kdev4 ]; then
/bin/echo -n "git (unknown)"
exit
fi
# display app version if git isn't installed.
if [ ! -x `which git` ]; then
# Display normal version if git is not installed
if [ ! -x `which git 2>/dev/null` ]; then
/bin/echo -n "$appver"
exit
fi
# Display subversion version if this is a working copy
gitver=`git rev-parse HEAD`
gitname=`LANG=C git describe --all HEAD 2>/dev/null | sed -e 's:^heads/::g'`
gitver=`LANG=C git rev-parse --short HEAD 2>/dev/null`
# display last 8 digits of HEAD SHA-1 + date
/bin/echo -n "$appver-git (${gitver:0:8} >= $date)"
# see if this is not a repository.
if [ -z "$gitver" ]; then
if [ -z "$KMESS_VER" ]; then
/bin/echo -n "$appver";
else
/bin/echo -n "$KMESS_VER";
fi
exit;
fi
# display subversion version and date
/bin/echo -n "$appver-git ($gitname@$gitver >= $date)"
Vendored Executable → Regular
View File
+3 -4
View File
@@ -1,5 +1,5 @@
PROJECT( isf-qt )
CMAKE_MINIMUM_REQUIRED( VERSION 2.6 )
CMAKE_MINIMUM_REQUIRED( VERSION 3.16 )
PROJECT( isf-qt LANGUAGES CXX )
#### Main switches ####
@@ -38,7 +38,7 @@ SET( ISFQT_VERSION "1.0dev" )
#### Inclusions ####
FIND_PACKAGE( Qt4 REQUIRED )
FIND_PACKAGE( Qt6 REQUIRED COMPONENTS Core Core5Compat Gui Widgets )
OPTION( WANT_GIF "Enable support for reading and writing Fortified-GIF images" ON )
IF( WANT_GIF )
@@ -129,4 +129,3 @@ IF( NOT ISFQT_IS_BUNDLED )
INSTALL( FILES cmake/FindIsfQt.cmake
DESTINATION ${CMAKE_ROOT}/Modules )
ENDIF()
+8
View File
@@ -0,0 +1,8 @@
#ifndef ISFQT_QMATRIX_COMPAT_H
#define ISFQT_QMATRIX_COMPAT_H
#include <QTransform>
using QMatrix = QTransform;
#endif
+6 -6
View File
@@ -105,7 +105,7 @@ namespace Isf
PenType penType();
void save( QIODevice&, bool = false );
void setDrawing( Isf::Drawing* );
virtual QSize sizeHint() const;
QSize sizeHint() const override;
public slots:
void clear();
@@ -115,11 +115,11 @@ namespace Isf
void setPenType( PenType );
protected: // protected methods
void mousePressEvent( QMouseEvent* );
void mouseMoveEvent( QMouseEvent* );
void mouseReleaseEvent( QMouseEvent* );
void paintEvent( QPaintEvent* );
void resizeEvent( QResizeEvent* );
void mousePressEvent( QMouseEvent* ) override;
void mouseMoveEvent( QMouseEvent* ) override;
void mouseReleaseEvent( QMouseEvent* ) override;
void paintEvent( QPaintEvent* ) override;
void resizeEvent( QResizeEvent* ) override;
private: // private methods
void drawLineTo( const QPoint& );
+7 -5
View File
@@ -29,8 +29,10 @@ SET( ISFQT_PUBLIC_HEADERS
)
SET( ISFQT_LIBS
${QT_QTCORE_LIBRARY}
${QT_QTGUI_LIBRARY}
Qt6::Core
Qt6::Core5Compat
Qt6::Gui
Qt6::Widgets
)
SET( ISFQT_RCCS
@@ -45,11 +47,11 @@ ENDIF( GIF_FOUND )
#### Compilation ####
QT4_WRAP_CPP( MOC_SRCS ../include/isfinkcanvas.h )
QT6_WRAP_CPP( MOC_SRCS ../include/isfinkcanvas.h )
QT4_ADD_RESOURCES( ISFQT_RCC_SRCS ${ISFQT_RCCS} )
QT6_ADD_RESOURCES( ISFQT_RCC_SRCS ${ISFQT_RCCS} )
INCLUDE_DIRECTORIES( ${QT_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR} )
INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR} )
# Do not install the library if we're bundling it into an application
IF( ISFQT_IS_BUNDLED )
+2 -2
View File
@@ -131,14 +131,14 @@ namespace Isf
{
}
/// Quick comparison operator
bool operator ==( const AttributeSet& other )
bool operator ==( const AttributeSet& other ) const
{
return color == other.color
&& flags == other.flags
&& penSize == other.penSize;
}
/// Quick comparison operator
bool operator !=( const AttributeSet& other )
bool operator !=( const AttributeSet& other ) const
{
return color != other.color
|| flags != other.flags
+45 -34
View File
@@ -341,7 +341,7 @@ Drawing& Stream::readerPng( const QByteArray& pngRawBytes, bool decodeFromBase64
#ifdef ISFQT_DEBUG_VERBOSE
qDebug() << "Picture data is valid: checking for the ISF data tag...";
#endif
isfData = imageData.text( "application/x-ms-ink" ).toAscii();
isfData = imageData.text( "application/x-ms-ink" ).toLatin1();
if( ! isfData.isEmpty() )
{
@@ -381,7 +381,7 @@ bool Stream::supportsGif()
*/
QByteArray Stream::writer( const Drawing& drawing, bool encodeToBase64 )
{
if( &drawing == 0 || drawing.isNull() || drawing.error() != ISF_ERROR_NONE )
if( drawing.isNull() || drawing.error() != ISF_ERROR_NONE )
{
#ifdef ISFQT_DEBUG
qDebug() << "The drawing was not valid!";
@@ -478,18 +478,20 @@ QByteArray Stream::writerGif( const Drawing& drawing, bool encodeToBase64 )
// Initialise the gif variables
QBuffer gifData;
GifFileType* gifImage = NULL;
ColorMapObject* cmap = NULL;
int height = isfImage.height();
int width = isfImage.width();
int numColors = 0;
bool gifError = true;
GifFileType* gifImage = NULL;
ColorMapObject* cmap = NULL;
int height = isfImage.height();
int width = isfImage.width();
int colorCount = 0;
int numColors = 0;
int gifErrorCode = 0;
bool gifError = true;
// Convert the image to GIF using libgif
// Open the gif file
gifData.open( QIODevice::WriteOnly );
gifImage = EGifOpen( (void*)&gifData, GifWriteToByteArray );
gifImage = EGifOpen( (void*)&gifData, GifWriteToByteArray, &gifErrorCode );
if( gifImage == 0 )
{
qWarning() << "Couldn't initialize gif library!";
@@ -497,21 +499,22 @@ QByteArray Stream::writerGif( const Drawing& drawing, bool encodeToBase64 )
}
// Create the color map
numColors = ( isfImage.numColors() << 2 );
if( numColors > 256 )
colorCount = isfImage.colorCount();
numColors = 2;
while( numColors < colorCount && numColors < 256 )
{
numColors = 256;
numColors <<= 1;
}
cmap = MakeMapObject( numColors, NULL );
if( cmap == 0 && isfImage.numColors() > 1 )
cmap = GifMakeMapObject( numColors, NULL );
if( cmap == 0 && colorCount > 1 )
{
qWarning() << "Couldn't create map object for gif conversion (colors:" << isfImage.numColors() << ")!";
qWarning() << "Couldn't create map object for gif conversion (colors:" << colorCount << ")!";
goto writeError;
}
// Fill in the color map with the colors in the image color table
for( int i = 0; i < isfImage.numColors(); ++i )
for( int i = 0; i < colorCount && i < numColors; ++i )
{
const QRgb &color( isfImage.color( i ) );
cmap->Colors[i].Red = qRed ( color );
@@ -543,7 +546,7 @@ QByteArray Stream::writerGif( const Drawing& drawing, bool encodeToBase64 )
// Write every scanline
for( int line = 0; line < height; ++line )
{
if( EGifPutLine( gifImage, isfImage.scanLine( line ), width ) == GIF_ERROR )
if( EGifPutLine( gifImage, reinterpret_cast<GifPixelType*>( isfImage.scanLine( line ) ), width ) == GIF_ERROR )
{
qWarning() << "EGifPutLine failed at scanline" << line
<< "(height:" << isfImage.height()
@@ -576,9 +579,15 @@ QByteArray Stream::writerGif( const Drawing& drawing, bool encodeToBase64 )
else
{
// Write the extension
if( EGifPutExtensionFirst( gifImage, COMMENT_EXT_FUNC_CODE, MAX_GIF_BYTE, isfData.left( MAX_GIF_BYTE ).data() ) == GIF_ERROR )
if( EGifPutExtensionLeader( gifImage, COMMENT_EXT_FUNC_CODE ) == GIF_ERROR )
{
qWarning() << "EGifPutExtensionFirst failed!";
qWarning() << "EGifPutExtensionLeader failed!";
goto writeError;
}
if( EGifPutExtensionBlock( gifImage, MAX_GIF_BYTE, isfData.left( MAX_GIF_BYTE ).constData() ) == GIF_ERROR )
{
qWarning() << "EGifPutExtensionBlock failed!";
goto writeError;
}
@@ -590,9 +599,9 @@ QByteArray Stream::writerGif( const Drawing& drawing, bool encodeToBase64 )
// Write all the full data blocks
while( length >= MAX_GIF_BYTE )
{
if( EGifPutExtensionNext( gifImage, 0, MAX_GIF_BYTE, isfData.mid( pos, MAX_GIF_BYTE ).data() ) == GIF_ERROR )
if( EGifPutExtensionBlock( gifImage, MAX_GIF_BYTE, isfData.mid( pos, MAX_GIF_BYTE ).constData() ) == GIF_ERROR )
{
qWarning() << "EGifPutExtensionNext failed!";
qWarning() << "EGifPutExtensionBlock failed!";
goto writeError;
}
@@ -603,19 +612,17 @@ QByteArray Stream::writerGif( const Drawing& drawing, bool encodeToBase64 )
// Write the last block
if( length > 0 )
{
if( EGifPutExtensionLast( gifImage, 0, length, isfData.mid( pos, MAX_GIF_BYTE ).data() ) == GIF_ERROR )
if( EGifPutExtensionBlock( gifImage, length, isfData.mid( pos, MAX_GIF_BYTE ).constData() ) == GIF_ERROR )
{
qWarning() << "EGifPutExtensionLast (n) failed!";
qWarning() << "EGifPutExtensionBlock (tail) failed!";
goto writeError;
}
}
else
if( EGifPutExtensionTrailer( gifImage ) == GIF_ERROR )
{
if( EGifPutExtensionLast( gifImage, 0, 0, 0 ) == GIF_ERROR )
{
qWarning() << "EGifPutExtensionLast (0) failed!";
goto writeError;
}
qWarning() << "EGifPutExtensionTrailer failed!";
goto writeError;
}
}
@@ -623,13 +630,19 @@ QByteArray Stream::writerGif( const Drawing& drawing, bool encodeToBase64 )
writeError:
// Clean up the GIF converter etc
EGifCloseFile( gifImage );
FreeMapObject( cmap );
if( gifImage != 0 && EGifCloseFile( gifImage, &gifErrorCode ) == GIF_ERROR )
{
gifError = true;
}
if( cmap != 0 )
{
GifFreeMapObject( cmap );
}
gifData.close();
if( gifError )
{
qWarning() << "GIF error code:" << GifLastError();
qWarning() << "GIF error code:" << gifErrorCode << GifErrorString( gifErrorCode );
}
else
{
@@ -704,5 +717,3 @@ QByteArray Stream::writerPng( const Drawing& drawing, bool encodeToBase64 )
return imageBytes.data();
}
}
+1 -1
View File
@@ -30,6 +30,7 @@
#include <IsfQtDrawing>
#include <QPainter>
#include <QPainterPath>
#include <QPixmap>
#include <cmath>
@@ -726,4 +727,3 @@ void Drawing::updateBoundingRect()
#endif
}
+7 -8
View File
@@ -26,6 +26,7 @@
#include "isfqt-internal.h"
#include <QPainterPath>
#include <QVector>
using namespace Isf;
@@ -169,7 +170,7 @@ void Stroke::bezierCalculateControlPoints()
}
// right hand side vector.
double rhs[n];
QVector<double> rhs( n );
// set RHS x values
for( int i = 1; i < n-1; i++ )
@@ -181,8 +182,8 @@ void Stroke::bezierCalculateControlPoints()
rhs[n-1] = ( 8 * bezierKnots_[n-1].x() + bezierKnots_[n].x() ) / 2.0;
// get the first ctl points x values.
double x[n];
bezierGetFirstControlPoints( rhs, x, n );
QVector<double> x( n );
bezierGetFirstControlPoints( rhs.data(), x.data(), n );
// now set RHS y-values.
@@ -194,8 +195,8 @@ void Stroke::bezierCalculateControlPoints()
rhs[0] = bezierKnots_[0].y() + 2 * bezierKnots_[1].y();
rhs[n-1] = ( 8 * bezierKnots_[n-1].y() + bezierKnots_[n].y() ) / 2.0;
double y[n];
bezierGetFirstControlPoints( rhs, y, n );
QVector<double> y( n );
bezierGetFirstControlPoints( rhs.data(), y.data(), n );
// now fill the output QList.
for( int i = 0; i < n; i++ )
@@ -226,7 +227,7 @@ void Stroke::bezierCalculateControlPoints()
void Stroke::bezierGetFirstControlPoints( double rhs[], double* xOut, int n )
{
double* x = xOut; // solution vector.
double tmp[n]; // temp workspace.
QVector<double> tmp( n ); // temp workspace.
double b = 2.0;
x[0] = rhs[0] / b;
@@ -513,5 +514,3 @@ QMatrix* Stroke::transform()
{
return transform_;
}
+5 -7
View File
@@ -406,7 +406,7 @@ IsfError TagsParser::parseUnsupported( StreamData* streamData, const QString& ta
*/
IsfError TagsParser::parseCustomTag( StreamData* streamData, Drawing* drawing, quint64 tagIndex )
{
quint64 tag = tagIndex - FIRST_CUSTOM_TAG_ID;
quint64 tag = tagIndex - static_cast<quint64>( FIRST_CUSTOM_TAG_ID );
// Find if we have this tag registered in the GUID table
if( tag >= (quint64)drawing->guids_.count() )
@@ -427,8 +427,8 @@ IsfError TagsParser::parseCustomTag( StreamData* streamData, Drawing* drawing, q
// String values
if(
guid == "{96E9B229-B657-DA4F-BFFD-F54DBA4C35F9}" // Unknown meaning, name?
|| guid == "{7C8E448A-390F-D94C-BB52-71FDA3221674}" // Unknown meaning, surname?
guid == QUuid( "{96E9B229-B657-DA4F-BFFD-F54DBA4C35F9}" ) // Unknown meaning, name?
|| guid == QUuid( "{7C8E448A-390F-D94C-BB52-71FDA3221674}" ) // Unknown meaning, surname?
)
{
// TODO: WTF is the first char for? Its value is always "0x08"
@@ -438,7 +438,7 @@ IsfError TagsParser::parseCustomTag( StreamData* streamData, Drawing* drawing, q
foreach( quint64 item, data )
{
string.append( (quint8)item );
string.append( QChar( static_cast<quint8>( item ) ) );
}
#ifdef ISFQT_DEBUG
@@ -1136,7 +1136,7 @@ IsfError TagsParser::parseTransformation( StreamData* streamData, Drawing* drawi
float dx = Compress::decodeFloat( dataSource );
float dy = Compress::decodeFloat( dataSource );
transform->setMatrix( scaleX, scaleY, shearX, shearY, dx, dy );
transform->setMatrix( scaleX, shearX, 0, shearY, scaleY, 0, dx, dy, 1 );
#ifdef ISFQT_DEBUG_VERBOSE
qDebug() << "- Transformation details - "
@@ -1611,5 +1611,3 @@ QByteArray TagsParser::analyzePayload( StreamData* streamData, const quint64 pay
return result;
}
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
-4
View File
@@ -46,7 +46,3 @@ void TestAlgorithms::testDataSource()
QTEST_MAIN(TestAlgorithms)
#include "test_algorithms.moc"
-4
View File
@@ -132,7 +132,3 @@ void TestIsfDrawing::readTestIsfData( const QString& filename, QByteArray& byteA
QTEST_MAIN(TestIsfDrawing)
#include "test_isfdrawing.moc"
@@ -261,7 +261,3 @@ void TestMultibyteCoding::floatDecode()
QTEST_MAIN(TestMultibyteCoding)
#include "test_multibyte_coding.moc"
@@ -84,7 +84,3 @@ void TestPngFortification::testDecode()
QTEST_MAIN(TestPngFortification)
#include "test_png_fortification.moc"
+3 -2
View File
@@ -6,5 +6,6 @@ ADD_SUBDIRECTORY( emoticons )
ADD_SUBDIRECTORY( chatstyles )
INSTALL( FILES kmesschatstyles.knsrc DESTINATION ${CONFIG_INSTALL_DIR} )
INSTALL( FILES kmess.notifyrc DESTINATION ${DATA_INSTALL_DIR}/kmess )
INSTALL( FILES kmess.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} )
INSTALL( FILES kmess.notifyrc DESTINATION ${KDE_INSTALL_KNOTIFYRCDIR} )
INSTALL( FILES kmess.desktop DESTINATION ${XDG_APPS_INSTALL_DIR}
RENAME org.kmess.kmess.desktop )
@@ -4,5 +4,11 @@ include_directories( ${KDE4_INCLUDES} ${KDE4_INCLUDE_DIR} ${QT_INCLUDES} )
########### install files ###############
install( FILES Classic-compact.xsl Classic-compact.css DESTINATION ${DATA_INSTALL_DIR}/kmess/styles/Classic-compact/ )
install(
FILES
Classic-compact.xsl
Classic-compact.css
DESTINATION
${DATA_INSTALL_DIR}/kmess/styles/Classic-compact/
)
@@ -67,6 +67,19 @@ div.conversation
}
/*
* Style overrides for chat history messages
*/
.history {
margin-bottom: 3em;
}
.history * {
color: #444;
background-color: transparent;
border: 0;
}
/**
* Remaining markup is done inline in the .xsl file.
@@ -27,6 +27,36 @@
omit-xml-declaration="yes"
encoding="utf-8" />
<!--
Template for the chat history
-->
<xsl:template match="history">
<div class="history">
<xsl:apply-templates />
</div>
</xsl:template>
<!--
Template for conversation headers
-->
<xsl:template match="header">
<div class="{body/@dir}">
<div style="margin:2em;padding:.5em;border:1px solid #dce6ff;font-size:larger;color:purple;text-align:center;" dir="{body/@dir}">
<div class="conversationLabel" dir="{body/@dir}">
<xsl:text kmess:translate="true"> Conversation time: </xsl:text>
</div>
<div class="conversationDate" dir="{body/@dir}">
<xsl:value-of select="date"/>
<xsl:text> &#160; </xsl:text>
<xsl:value-of select="time"/>
</div>
</div>
</div>
</xsl:template>
<!--
Normal chat message.
This is used to process individual chat messages.
+7 -1
View File
@@ -4,5 +4,11 @@ include_directories( ${KDE4_INCLUDES} ${KDE4_INCLUDE_DIR} ${QT_INCLUDES} )
########### install files ###############
install( FILES Classic.xsl Classic.css DESTINATION ${DATA_INSTALL_DIR}/kmess/styles/Classic/ )
install(
FILES
Classic.xsl
Classic.css
DESTINATION
${DATA_INSTALL_DIR}/kmess/styles/Classic/
)
+13
View File
@@ -67,6 +67,19 @@ div.conversation
}
/*
* Style overrides for chat history messages
*/
.history {
margin-bottom: 3em;
}
.history * {
color: #444;
background-color: transparent;
border: 0;
}
/**
* Remaining markup is done inline in the .xsl file.
*/
+30
View File
@@ -27,6 +27,36 @@
indent="no"
omit-xml-declaration="yes" />
<!--
Template for the chat history
-->
<xsl:template match="history">
<div class="history">
<xsl:apply-templates />
</div>
</xsl:template>
<!--
Template for conversation headers
-->
<xsl:template match="header">
<div class="{body/@dir}">
<div style="margin:2em;padding:.5em;border:1px solid #dce6ff;font-size:larger;color:purple;text-align:center;" dir="{body/@dir}">
<div class="conversationLabel" dir="{body/@dir}">
<xsl:text kmess:translate="true"> Conversation time: </xsl:text>
</div>
<div class="conversationDate" dir="{body/@dir}">
<xsl:value-of select="date"/>
<xsl:text> &#160; </xsl:text>
<xsl:value-of select="time"/>
</div>
</div>
</div>
</xsl:template>
<!--
Normal chat message.
This is used to process individual chat messages.
@@ -4,5 +4,11 @@ include_directories( ${KDE4_INCLUDES} ${KDE4_INCLUDE_DIR} ${QT_INCLUDES} )
########### install files ###############
install( FILES Colourful-Enclosed.xsl Colourful-Enclosed.css DESTINATION ${DATA_INSTALL_DIR}/kmess/styles/Colourful-Enclosed/ )
install(
FILES
Colourful-Enclosed.xsl
Colourful-Enclosed.css
DESTINATION
${DATA_INSTALL_DIR}/kmess/styles/Colourful-Enclosed/
)
@@ -214,3 +214,16 @@ div.conversation
color: purple;
text-align: center;
}
/*
* Style overrides for chat history messages
*/
.history {
margin-bottom: 3em;
}
.history * {
color: #444;
background-color: transparent;
border: 0;
}
@@ -38,6 +38,16 @@
<xsl:param name="csspath" select="'Colourful-Enclosed.css'" />
<!--
Template for the chat history
-->
<xsl:template match="history">
<div class="history">
<xsl:apply-templates />
</div>
</xsl:template>
<!--
Template for the page body
-->
@@ -68,6 +78,24 @@
</html>
</xsl:template>
<!--
Template for conversation headers
-->
<xsl:template match="header">
<div class="{body/@dir}">
<div class="conversation" dir="{body/@dir}">
<div class="conversationLabel" dir="{body/@dir}">
<xsl:text kmess:translate="true"> Conversation time: </xsl:text>
</div>
<div class="conversationDate" dir="{body/@dir}">
<xsl:value-of select="date"/>
<xsl:text> &#160; </xsl:text>
<xsl:value-of select="time"/>
</div>
</div>
</div>
</xsl:template>
<!--
Template for normal messages
+7 -1
View File
@@ -4,5 +4,11 @@ include_directories( ${KDE4_INCLUDES} ${KDE4_INCLUDE_DIR} ${QT_INCLUDES} )
########### install files ###############
install( FILES Dim.xsl Dim.css DESTINATION ${DATA_INSTALL_DIR}/kmess/styles/Dim/ )
install(
FILES
Dim.xsl
Dim.css
DESTINATION
${DATA_INSTALL_DIR}/kmess/styles/Dim/
)
+15
View File
@@ -200,3 +200,18 @@ div.conversation
margin-bottom: 1em;
color: purple;
}
/*
* Style overrides for chat history messages
*/
.history {
margin-bottom: 3em;
}
.history * {
color: #444;
background-color: transparent;
border: 0;
}
+28
View File
@@ -38,6 +38,16 @@
<xsl:param name="csspath" select="'Dim.css'" />
<!--
Template for the chat history
-->
<xsl:template match="history">
<div class="history">
<xsl:apply-templates />
</div>
</xsl:template>
<!--
Template for the page body
-->
@@ -68,6 +78,24 @@
</html>
</xsl:template>
<!--
Template for conversation headers
-->
<xsl:template match="header">
<div class="{body/@dir}">
<div class="conversation" dir="{body/@dir}">
<div class="conversationLabel" dir="{body/@dir}">
<xsl:text kmess:translate="true"> Conversation time: </xsl:text>
</div>
<div class="conversationDate" dir="{body/@dir}">
<xsl:value-of select="date"/>
<xsl:text> &#160; </xsl:text>
<xsl:value-of select="time"/>
</div>
</div>
</div>
</xsl:template>
<!--
Template for normal messages
-->
+7 -1
View File
@@ -4,5 +4,11 @@ include_directories( ${KDE4_INCLUDES} ${KDE4_INCLUDE_DIR} ${QT_INCLUDES} )
########### install files ###############
install( FILES Efficient.xsl Efficient.css DESTINATION ${DATA_INSTALL_DIR}/kmess/styles/Efficient/ )
install(
FILES
Efficient.xsl
Efficient.css
DESTINATION
${DATA_INSTALL_DIR}/kmess/styles/Efficient/
)
+16
View File
@@ -271,3 +271,19 @@ div.conversation
font-size: larger;
color: purple;
}
/*
* Style overrides for chat history messages
*/
.history {
margin-bottom: 3em;
}
.history * {
color: #444;
background-color: transparent;
border: 0;
}
+28
View File
@@ -38,6 +38,16 @@
<xsl:param name="csspath" select="'Efficient.css'" />
<!--
Template for the chat history
-->
<xsl:template match="history">
<div class="history">
<xsl:apply-templates />
</div>
</xsl:template>
<!--
Template for the page body
-->
@@ -68,6 +78,24 @@
</html>
</xsl:template>
<!--
Template for conversation headers
-->
<xsl:template match="header">
<div class="{body/@dir}">
<div class="conversation" dir="{body/@dir}">
<div class="conversationLabel" dir="{body/@dir}">
<xsl:text kmess:translate="true"> Conversation time: </xsl:text>
</div>
<div class="conversationDate" dir="{body/@dir}">
<xsl:value-of select="date"/>
<xsl:text> &#160; </xsl:text>
<xsl:value-of select="time"/>
</div>
</div>
</div>
</xsl:template>
<!--
Template for normal messages
-->
+13 -1
View File
@@ -4,5 +4,17 @@ include_directories( ${KDE4_INCLUDES} ${KDE4_INCLUDE_DIR} ${QT_INCLUDES} )
########### install files ###############
install( FILES Fresh-dark.xsl Fresh-dark.css bg_gravatar.gif bg_gravatar_rtl.gif buddy_icon.png DESTINATION ${DATA_INSTALL_DIR}/kmess/styles/Fresh-dark/ )
install(
FILES
Fresh-dark.xsl
Fresh-dark.css
bg_gravatar.gif
bg_gravatar_rtl.gif
bg_gravatar_gray.gif
bg_gravatar_gray_rtl.gif
buddy_icon.png
DESTINATION
${DATA_INSTALL_DIR}/kmess/styles/Fresh-dark/
)
+25
View File
@@ -300,3 +300,28 @@ div.conversation
font-size: larger;
color: #bb0;
}
/*
* Style overrides for chat history messages
*/
.history {
margin-bottom: 3em;
}
.history * {
color: #444;
background-color: transparent;
border: 0;
}
.history .avatar
{
background-image: url("bg_gravatar_gray.gif");
}
.history .rtl .avatar
{
background-image: url("bg_gravatar_gray_rtl.gif");
}
+28
View File
@@ -39,6 +39,16 @@
<xsl:param name="csspath" select="'Fresh-dark.css'" />
<!--
Template for the chat history
-->
<xsl:template match="history">
<div class="history">
<xsl:apply-templates />
</div>
</xsl:template>
<!--
Template for the page body
-->
@@ -69,6 +79,24 @@
</html>
</xsl:template>
<!--
Template for conversation headers
-->
<xsl:template match="header">
<div class="{body/@dir}">
<div class="conversation" dir="{body/@dir}">
<div class="conversationLabel" dir="{body/@dir}">
<xsl:text kmess:translate="true"> Conversation time: </xsl:text>
</div>
<div class="conversationDate" dir="{body/@dir}">
<xsl:value-of select="date"/>
<xsl:text> &#160; </xsl:text>
<xsl:value-of select="time"/>
</div>
</div>
</div>
</xsl:template>
<!--
Template for normal messages
-->
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.
+12 -1
View File
@@ -4,5 +4,16 @@ include_directories( ${KDE4_INCLUDES} ${KDE4_INCLUDE_DIR} ${QT_INCLUDES} )
########### install files ###############
install( FILES Fresh.xsl Fresh.css bg_gravatar.gif bg_gravatar_rtl.gif buddy_icon.png DESTINATION ${DATA_INSTALL_DIR}/kmess/styles/Fresh/ )
install(
FILES
Fresh.xsl
Fresh.css
bg_gravatar.gif
bg_gravatar_rtl.gif
bg_gravatar_gray.gif
bg_gravatar_gray_rtl.gif
buddy_icon.png
DESTINATION
${DATA_INSTALL_DIR}/kmess/styles/Fresh/
)
+24 -1
View File
@@ -52,7 +52,6 @@ dl, dt, dd
position: relative;
}
/*
* general message layout and colors.
*/
@@ -300,3 +299,27 @@ div.conversation
color: purple;
text-align: center;
}
/*
* Style overrides for chat history messages
*/
.history {
margin-bottom: 3em;
}
.history * {
color: #444;
background-color: transparent;
border: 0;
}
.history .avatar
{
background-image: url("bg_gravatar_gray.gif");
}
.history .rtl .avatar
{
background-image: url("bg_gravatar_gray_rtl.gif");
}
+28
View File
@@ -38,6 +38,16 @@
<xsl:param name="csspath" select="'Fresh.css'" />
<!--
Template for the chat history
-->
<xsl:template match="history">
<div class="history">
<xsl:apply-templates />
</div>
</xsl:template>
<!--
Template for the page body
-->
@@ -68,6 +78,24 @@
</html>
</xsl:template>
<!--
Template for conversation headers
-->
<xsl:template match="header">
<div class="{body/@dir}">
<div class="conversation" dir="{body/@dir}">
<div class="conversationLabel" dir="{body/@dir}">
<xsl:text kmess:translate="true"> Conversation time: </xsl:text>
</div>
<div class="conversationDate" dir="{body/@dir}">
<xsl:value-of select="date"/>
<xsl:text> &#160; </xsl:text>
<xsl:value-of select="time"/>
</div>
</div>
</div>
</xsl:template>
<!--
Template for normal messages
-->
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

+18 -17
View File
@@ -4,21 +4,22 @@ include_directories( ${KDE4_INCLUDES} ${KDE4_INCLUDE_DIR} ${QT_INCLUDES} )
########### install files ###############
set(kmess_pure_FILES
Pure.css
Pure.xsl
arrow0.png
arrow1.png
clock.png
contact.png
corner-bl.png
corner-br.png
corner-tl.png
corner-tr.png
important.png
myself.png
system.png
)
install( FILES ${kmess_pure_FILES} DESTINATION ${DATA_INSTALL_DIR}/kmess/styles/Pure/ )
install(
FILES
Pure.css
Pure.xsl
arrow0.png
arrow1.png
clock.png
contact.png
corner-bl.png
corner-br.png
corner-tl.png
corner-tr.png
important.png
myself.png
system.png
DESTINATION
${DATA_INSTALL_DIR}/kmess/styles/Pure/
)
+16
View File
@@ -338,3 +338,19 @@ div.conversation
font-size: larger;
color: purple;
}
/*
* Style overrides for chat history messages
*/
.history {
margin-bottom: 3em;
}
.history * {
color: #444;
background-color: transparent;
border: 0;
}
+28
View File
@@ -38,6 +38,16 @@
<xsl:param name="csspath" select="'Pure.css'" />
<!--
Template for the chat history
-->
<xsl:template match="history">
<div class="history">
<xsl:apply-templates />
</div>
</xsl:template>
<!--
Template for the page body
-->
@@ -68,6 +78,24 @@
</html>
</xsl:template>
<!--
Template for conversation headers
-->
<xsl:template match="header">
<div class="{body/@dir}">
<div class="conversation" dir="{body/@dir}">
<div class="conversationLabel" dir="{body/@dir}">
<xsl:text kmess:translate="true"> Conversation time: </xsl:text>
</div>
<div class="conversationDate" dir="{body/@dir}">
<xsl:value-of select="date"/>
<xsl:text> &#160; </xsl:text>
<xsl:value-of select="time"/>
</div>
</div>
</div>
</xsl:template>
<!--
Template for normal messages
View File
View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

+11 -9
View File
@@ -1,14 +1,16 @@
KDE4_INSTALL_ICONS( ${ICON_INSTALL_DIR} )
SET( KMESS_ICON_INSTALL_DIR ${DATA_INSTALL_DIR}/kmess/icons/hicolor/16x16 )
# If Likeback is enabled, install the needed icons
IF( NOT ${KMESS_DISABLE_LIKEBACK} EQUAL 1 )
INSTALL( FILES likeback_bug.png DESTINATION ${KMESS_ICON_INSTALL_DIR}/actions )
INSTALL( FILES likeback_dislike.png DESTINATION ${KMESS_ICON_INSTALL_DIR}/actions )
INSTALL( FILES likeback_feature.png DESTINATION ${KMESS_ICON_INSTALL_DIR}/actions )
INSTALL( FILES likeback_like.png DESTINATION ${KMESS_ICON_INSTALL_DIR}/actions )
INSTALL( FILES likeback_bug.png DESTINATION ${KDE_INSTALL_ICONDIR}/hicolor/16x16/actions )
INSTALL( FILES likeback_dislike.png DESTINATION ${KDE_INSTALL_ICONDIR}/hicolor/16x16/actions )
INSTALL( FILES likeback_feature.png DESTINATION ${KDE_INSTALL_ICONDIR}/hicolor/16x16/actions )
INSTALL( FILES likeback_like.png DESTINATION ${KDE_INSTALL_ICONDIR}/hicolor/16x16/actions )
ENDIF( NOT ${KMESS_DISABLE_LIKEBACK} EQUAL 1 )
INSTALL( FILES kmess-shadow.png DESTINATION ${KMESS_ICON_INSTALL_DIR}/apps )
INSTALL( FILES hi16-app-kmess.png DESTINATION ${KDE_INSTALL_ICONDIR}/hicolor/16x16/apps RENAME kmess.png )
INSTALL( FILES hi22-app-kmess.png DESTINATION ${KDE_INSTALL_ICONDIR}/hicolor/22x22/apps RENAME kmess.png )
INSTALL( FILES hi32-app-kmess.png DESTINATION ${KDE_INSTALL_ICONDIR}/hicolor/32x32/apps RENAME kmess.png )
INSTALL( FILES hi48-app-kmess.png DESTINATION ${KDE_INSTALL_ICONDIR}/hicolor/48x48/apps RENAME kmess.png )
INSTALL( FILES hi64-app-kmess.png DESTINATION ${KDE_INSTALL_ICONDIR}/hicolor/64x64/apps RENAME kmess.png )
INSTALL( FILES hi128-app-kmess.png DESTINATION ${KDE_INSTALL_ICONDIR}/hicolor/128x128/apps RENAME kmess.png )
INSTALL( FILES kmess-shadow.png DESTINATION ${KDE_INSTALL_ICONDIR}/hicolor/256x256/apps )
+5 -5
View File
@@ -1,14 +1,15 @@
[Desktop Entry]
Name=KMess
Exec=kmess -caption "%c" %i
Exec=kmess
Icon=kmess
Type=Application
DocPath=kmess/index.html
Terminal=0
Terminal=false
Categories=Qt;KDE;Network;InstantMessaging;
StartupWMClass=kmess
Comment=Live Messenger Client for KDE
Comment[de]=Live-Messenger-Klon für KDE 4
Comment[nl]=MSN Messenger Kloon voor KDE 4
Comment[de]=Live-Messenger-Client für KDE
Comment[nl]=Live Messenger-client voor KDE
GenericName=Live Messenger Client
GenericName[af]=Irc Kliënt
GenericName[ar]=عميل MSN
@@ -67,4 +68,3 @@ GenericName[xx]=xxMSN Clientxx
GenericName[zh_CN]=MSN
GenericName[zh_TW]=MSN
GenericName[zu]=Umthengi we MSN
+13 -1
View File
@@ -49,8 +49,20 @@ Comment=You have received a new email
Sound=kmess_msg.ogg
Action=Sound|Popup|Taskbar
[Event/contact changed]
Name=Contact Changed
Comment=A contact was changed (added, deleted, unblocked, changed group, etc).
Sound=kmess_msg.ogg
Action=Sound|Popup|Taskbar
[Event/group changed]
Name=Group Changed
Comment=A group was changed (added, deleted, renamed).
Sound=kmess_msg.ogg
Action=Sound|Popup|Taskbar
[Event/status]
Name=KMess and Network Status
Comment=Information on network and application status
Sound=KDE-Sys-Special.ogg
Action=Sound|Popup
Action=Sound|Popup
+4 -2
View File
@@ -16,9 +16,11 @@ SET( kmess_PICS
online.png
onthephone.png
unknown.png
contact_food_overlay.png
contact_phone_overlay.png
contact_away_overlay.png
contact_busy_overlay.png
contact_food_overlay.png
contact_invisible_overlay.png
contact_phone_overlay.png
)
INSTALL( FILES ${kmess_PICS} DESTINATION ${DATA_INSTALL_DIR}/kmess/pics )
Binary file not shown.

After

Width:  |  Height:  |  Size: 215 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 348 B

+2 -4
View File
@@ -1,5 +1,3 @@
include_directories( ${KDE4_INCLUDES} ${KDE4_INCLUDE_DIR} ${QT_INCLUDES} )
add_subdirectory( en )
# Documentation still uses the old KDE4 handbook macro. It will be ported
# once the application target itself configures and compiles with KF6.
+1 -1
View File
@@ -2172,7 +2172,7 @@
<member>Vincenzo Reale (More Italian) <email>smart2128@baslug.org</email></member>
<member>Andrea Decorte (More Italian) <email>adecorte@gmail.com</email></member>
<member>Daniel E. Moctezuma (Japanese) <email>shinsen27@gmail.com</email></member>
<member>Daniel E. Moctezuma (Japanese) <email>dmoctezuma@kmess.org</email></member>
<member>Park Dong Cheon (Korean) <email>pdc@kaist.ac.kr</email></member>
Executable → Regular
View File
+5 -2
View File
@@ -16,9 +16,12 @@ ELSE( NOT GETTEXT_MSGFMT_EXECUTABLE )
FOREACH( _poFile ${PO_FILES} )
GET_FILENAME_COMPONENT( _lang ${_poFile} NAME_WE )
SET( _gmoFile ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.gmo )
ADD_CUSTOM_COMMAND( TARGET translations
ADD_CUSTOM_COMMAND( OUTPUT ${_gmoFile}
COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} --check -o ${_gmoFile} ${_poFile}
DEPENDS ${_poFile})
DEPENDS ${_poFile}
VERBATIM )
ADD_CUSTOM_TARGET( translation_${_lang} DEPENDS ${_gmoFile} )
ADD_DEPENDENCIES( translations translation_${_lang} )
INSTALL( FILES ${_gmoFile} DESTINATION ${LOCALE_INSTALL_DIR}/${_lang}/LC_MESSAGES/ RENAME ${catalogname}.mo )
ENDFOREACH( _poFile ${PO_FILES} )
+496 -498
View File
File diff suppressed because it is too large Load Diff
+521 -532
View File
File diff suppressed because it is too large Load Diff
+502 -504
View File
File diff suppressed because it is too large Load Diff
+496 -498
View File
File diff suppressed because it is too large Load Diff
+522 -522
View File
File diff suppressed because it is too large Load Diff
+591 -566
View File
File diff suppressed because it is too large Load Diff
+497 -499
View File
File diff suppressed because it is too large Load Diff
+1682 -2421
View File
File diff suppressed because it is too large Load Diff
+489 -498
View File
File diff suppressed because it is too large Load Diff
+500 -502
View File
File diff suppressed because it is too large Load Diff
+628 -564
View File
File diff suppressed because it is too large Load Diff
+529 -536
View File
File diff suppressed because it is too large Load Diff
+471 -496
View File
File diff suppressed because it is too large Load Diff
Executable → Regular
View File
Executable → Regular
View File
+739 -679
View File
File diff suppressed because it is too large Load Diff
+496 -498
View File
File diff suppressed because it is too large Load Diff
+642 -563
View File
File diff suppressed because it is too large Load Diff
+496 -498
View File
File diff suppressed because it is too large Load Diff
+493 -498
View File
File diff suppressed because it is too large Load Diff
+523 -539
View File
File diff suppressed because it is too large Load Diff
+495 -498
View File
File diff suppressed because it is too large Load Diff
+3 -2
View File
@@ -10,9 +10,10 @@ msgstr ""
"Project-Id-Version: zh_TW\n"
"Report-Msgid-Bugs-To: http://www.kmess.org/board/\n"
"POT-Creation-Date: 2010-05-03 21:06+0200\n"
"PO-Revision-Date: 2010-07-17 03:53+0800\n"
"PO-Revision-Date: 2010-09-10 08:34+0800\n"
"Last-Translator: Yen-chou Chen <yenchou.mse90@nctu.edu.tw>\n"
"Language-Team: Chinese Traditional <zh-l10n@linux.org.tw>\n"
"Language: zh_TW\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -2719,7 +2720,7 @@ msgstr "Francesco Nwokeka"
#: main.cpp:183
msgid "Now Listening toggle button above the contact list."
msgstr "在聯絡人清單上方的現正收聽按鈕"
msgstr "現正收聽按鈕位於聯絡人清單上方"
#: main.cpp:186
msgid "Inspiration and assorted code"
+53 -43
View File
@@ -1,9 +1,11 @@
INCLUDE_DIRECTORIES( ${KDE4_INCLUDES} ${KDE4_INCLUDE_DIR} ${QT_INCLUDES} ${GCRYPT_INCLUDE_DIRS} )
include_directories(${CMAKE_CURRENT_BINARY_DIR} ${GCRYPT_INCLUDE_DIRS})
########### next target ###############
SET(kmess_SOURCES
chat/chathistorymanager.cpp
chat/chathistorywriter.cpp
chat/chatmaster.cpp
chat/chatmessagestyle.cpp
chat/chatmessageview.cpp
@@ -28,6 +30,7 @@ SET(kmess_SOURCES
dialogs/awaymessagedialog.cpp
dialogs/chathistorydialog.cpp
dialogs/contactaddeduserdialog.cpp
dialogs/contactaddeduserwidget.cpp
dialogs/contactentry.cpp
dialogs/contactpropertiesdialog.cpp
dialogs/invitedialog.cpp
@@ -76,6 +79,7 @@ SET(kmess_SOURCES
notification/contactstatusnotification.cpp
notification/notificationmanager.cpp
notification/newemailnotification.cpp
notification/addressbooknotifications.cpp
settings/accountpage.cpp
settings/accountsettingsdialog.cpp
settings/accountsmanagerpage.cpp
@@ -83,6 +87,7 @@ SET(kmess_SOURCES
settings/chatloggingpage.cpp
settings/chatstylepage.cpp
settings/emoticonspage.cpp
settings/filetransfersettingspage.cpp
settings/globalsettingsdialog.cpp
settings/miscellaneouspage.cpp
utils/crashhandler.cpp
@@ -98,6 +103,7 @@ SET(kmess_SOURCES
utils/xautolock.cpp
utils/xmlfunctions.cpp
utils/gradientelidelabel.cpp
utils/faderwidget.cpp
account.cpp
accountaction.cpp
accountsmanager.cpp
@@ -125,7 +131,7 @@ SET(kmess_UI_FILES
dialogs/addemoticondialog.ui
dialogs/awaymessagedialog.ui
dialogs/chathistorydialog.ui
dialogs/contactaddeduserdialog.ui
dialogs/contactaddeduserwidget.ui
dialogs/transferentry.ui
dialogs/transferwindow.ui
dialogs/contactentry.ui
@@ -139,23 +145,50 @@ SET(kmess_UI_FILES
settings/chatloggingpage.ui
settings/chatstylepage.ui
settings/emoticonspage.ui
settings/filetransfersettingspage.ui
settings/miscellaneouspage.ui
utils/inlineeditlabel.ui
)
SET(kmess_LIBS
${KDE4_KDECORE_LIBS}
${KDE4_KDEUI_LIBS}
${KDE4_KIO_LIBS}
${KDE4_KHTML_LIBS}
${KDE4_KNOTIFYCONFIG_LIBS}
${KDE4_KNEWSTUFF2_LIBS}
${KDE4_PHONON_LIBS}
${KDE4_SOLID_LIBS}
Qt6::Core
Qt6::Core5Compat
Qt6::DBus
Qt6::Gui
Qt6::Multimedia
Qt6::Network
Qt6::Test
Qt6::WebEngineWidgets
Qt6::Widgets
Qt6::Xml
isf-qt
KF6::ConfigCore
KF6::ConfigGui
KF6::ConfigWidgets
KF6::Codecs
KF6::Completion
KF6::CoreAddons
KF6::Crash
KF6::DBusAddons
KF6::IdleTime
KF6::I18n
KF6::IconThemes
KF6::KIOCore
KF6::KIOWidgets
KF6::Notifications
KF6::NotifyConfig
KF6::Parts
KF6::Service
KF6::Solid
KF6::StatusNotifierItem
KF6::TextWidgets
KF6::WidgetsAddons
KF6::WindowSystem
KF6::Wallet
KF6::XmlGui
${LIBXML2_LIBRARIES}
${LIBXSLT_LIBRARIES}
${GCRYPT_LIBRARIES}
${QT_QTTEST_LIBRARY}
)
IF( ${GIF_FOUND} )
@@ -163,10 +196,7 @@ IF( ${GIF_FOUND} )
SET( kmess_LIBS ${kmess_LIBS} ${GIF_LIBRARIES} )
ENDIF( ${GIF_FOUND} )
IF( ISFQT_FOUND )
INCLUDE_DIRECTORIES( ${ISFQT_INCLUDE_DIR} )
SET( kmess_LIBS ${kmess_LIBS} ${ISFQT_LIBRARIES} )
ENDIF( ISFQT_FOUND )
INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR}/contrib/isf-qt/include )
# If LikeBack is enabled, compile it
IF( NOT ${KMESS_DISABLE_LIKEBACK} EQUAL 1 )
@@ -185,16 +215,8 @@ if(APPLE)
set(kmess_SOURCES ${kmess_SOURCES} notification/macnotification.cpp)
endif(APPLE)
#new system tray spec - optional
IF( HAVE_NEW_TRAY )
SET( kmess_SOURCES ${kmess_SOURCES}
notification/newsystemtraywidget.cpp )
INCLUDE_DIRECTORIES( ${KNOTIFICATIONITEM_INCLUDE_DIR} )
SET( kmess_LIBS ${kmess_LIBS} ${KNOTIFICATIONITEM_LIBRARIES} )
ELSE()
SET( kmess_SOURCES ${kmess_SOURCES}
notification/systemtraywidget.cpp )
ENDIF()
SET( kmess_SOURCES ${kmess_SOURCES}
notification/newsystemtraywidget.cpp )
# If we're compiling in debug mode:
IF( ${KMESS_ENABLE_DEBUG_OUTPUT} EQUAL 1 )
@@ -211,30 +233,18 @@ IF( ${KMESS_ENABLE_DEBUG_OUTPUT} EQUAL 1 )
ENDIF( CMAKE_BUILD_TYPE STREQUAL debugfull )
ENDIF( ${KMESS_ENABLE_DEBUG_OUTPUT} EQUAL 1 )
# Add XScreensaver library for away-idle detection.
IF( X11_Xscreensaver_FOUND )
SET(kmess_LIBS ${kmess_LIBS} ${X11_Xscreensaver_LIB} ${X11_LIBRARIES} )
ENDIF( X11_Xscreensaver_FOUND )
# Set our new shiny KDE debug number to be the default
add_definitions( -DKDE_DEFAULT_DEBUG_AREA=5130 )
# Define the app icon for Windows / Mac OS
SET( kmess_SRCS )
KDE4_ADD_APP_ICON( kmess_SRCS ../data/icons/hi*-app-kmess.png )
SET( kmess_SOURCES ${kmess_SOURCES} ${kmess_SRCS} )
# Create a DBus adapter from XML file
QT4_ADD_DBUS_ADAPTOR( kmess_SOURCES utils/kmessdbus.xml utils/kmessdbus.h KMessDBus )
qt_add_dbus_adaptor( kmess_DBUS_SRCS utils/kmessdbus.xml utils/kmessdbus.h KMessDBus )
# Define all files
KDE4_ADD_UI_FILES( kmess_SOURCES ${kmess_UI_FILES} )
KDE4_ADD_EXECUTABLE( kmess ${kmess_SOURCES} )
qt_wrap_ui( kmess_UI_SRCS ${kmess_UI_FILES} )
add_executable( kmess ${kmess_SOURCES} ${kmess_UI_SRCS} ${kmess_DBUS_SRCS} )
target_include_directories( kmess PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} )
# Link to final executable
TARGET_LINK_LIBRARIES( kmess ${kmess_LIBS} )
INSTALL( TARGETS kmess DESTINATION ${BIN_INSTALL_DIR})
INSTALL( FILES chat/chatwindowui.rc DESTINATION ${DATA_INSTALL_DIR}/kmess )
INSTALL( FILES kmessinterfaceui.rc DESTINATION ${DATA_INSTALL_DIR}/kmess )
INSTALL( FILES chat/chatwindowui.rc DESTINATION ${KDE_INSTALL_KXMLGUIDIR}/kmess )
INSTALL( FILES kmessinterfaceui.rc DESTINATION ${KDE_INSTALL_KXMLGUIDIR}/kmess )
+74 -58
View File
@@ -19,17 +19,17 @@
#include "contact/msnobject.h"
#include "utils/kmessconfig.h"
#include "utils/kmessshared.h"
#include "accountsmanager.h"
#include "kmessdebug.h"
#include <QDir>
#include <QRegExp>
#include <QRegularExpression>
#include <KConfigGroup>
#include <KGlobal>
#include <KLocale>
#include <KStandardDirs>
#include <KLocalizedString>
#ifdef KMESSDEBUG_ACCOUNT
@@ -54,7 +54,7 @@ Account::Account()
friendlyName_( i18n("Your name"), false ), // Do not parse this name, CurrentAccount is not ready when initializing
guestAccount_(true),
groupFollowupMessages_(true),
handle_( i18n("you@hotmail.com") ),
handle_( i18n("you@escargot.chat") ),
hideNotificationsWhenBusy_(true),
idleTime_(5),
initialStatus_(STATUS_ONLINE),
@@ -67,7 +67,7 @@ Account::Account()
savePassword_(false),
shakeNudge_(true),
showAllowedContacts_(false),
showChatUserPicture_(false),
showChatUserPicture_(true),
showContactEmail_(false),
showContactListBird_(true),
showEmail_(true),
@@ -120,7 +120,7 @@ Account::~Account()
delete msnObject_;
#ifdef KMESSDEBUG_ACCOUNT_GENERAL
kDebug() << "DESTROYED. [handle=" << handle_ << "]";
kmDebug() << "DESTROYED. [handle=" << handle_ << "]";
#endif
}
@@ -130,7 +130,7 @@ Account::~Account()
void Account::copyAccount( const Account *account )
{
#ifdef KMESSDEBUG_ACCOUNT_GENERAL
kDebug() << "Copying account data...";
kmDebug() << "Copying account data...";
#endif
// This method is used to clone the settings of an Account to the CurrentAccount,
@@ -649,7 +649,7 @@ int Account::getListPictureSize() const
// Return the path to the current display picture
const QString Account::getPicturePath( bool fallBack ) const
{
static QString defaultPicture( KGlobal::dirs()->findResource( "data", "kmess/pics/kmesspic.png" ) );
static QString defaultPicture( KMessShared::findResource( "data", "kmess/pics/kmesspic.png" ) );
// Return the picture path if the user has selected to show it; else return an empty string
if( ! showPicture_ )
@@ -726,7 +726,27 @@ bool Account::isGuestAccount() const
// Validate a contact email
bool Account::isValidEmail( QString email )
{
return email.contains( QRegExp( "^[A-Z0-9._%\\-]+@(?:[A-Z0-9\\-]+\\.)+[A-Z]{2,4}$", Qt::CaseInsensitive ) );
static const QRegularExpression emailPattern(
"^[A-Z0-9._%\\-]+@(?:[A-Z0-9\\-]+\\.)+[A-Z]{2,}$",
QRegularExpression::CaseInsensitiveOption );
return emailPattern.match( email ).hasMatch();
}
// Validate a Messenger handle
bool Account::isValidHandle( QString handle )
{
handle = handle.trimmed();
if( isValidEmail( handle ) )
{
return true;
}
static const QRegularExpression escargotNamePattern(
"^[A-Z0-9._%\\-]{1,64}$",
QRegularExpression::CaseInsensitiveOption );
return escargotNamePattern.match( handle ).hasMatch();
}
@@ -788,7 +808,7 @@ void Account::readProperties( const QString &handle )
savePassword_ = profileGroup.readEntry( "savePassword", false );
shakeNudge_ = profileGroup.readEntry( "shakeNudge", true );
showAllowedContacts_ = profileGroup.readEntry( "showAllowed", false );
showChatUserPicture_ = profileGroup.readEntry( "showChatUserPicture", false );
showChatUserPicture_ = profileGroup.readEntry( "showChatUserPicture", true );
showContactEmail_ = profileGroup.readEntry( "showContactEmail", false );
showContactListBird_ = profileGroup.readEntry( "showContactListBird", true );
showEmail_ = profileGroup.readEntry( "showEmail", true );
@@ -821,17 +841,17 @@ void Account::readProperties( const QString &handle )
dirty_ = false;
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Resetting 'dirty' to false.";
kmDebug() << "Resetting 'dirty' to false.";
#endif
// If a chat style is removed, fall back to the default.
// This default is "Fresh" as of 1.5 final, to improve the first impression a user gets.
// The previous "Default" theme has been renamed to "Classic".
// This code also makes the migration from 1.5-pre2 to 1.5 (and beyond) easier.
if( KGlobal::dirs()->findResource( "data", "kmess/styles/" + chatStyle_ + '/' + chatStyle_ + ".xsl" ).isEmpty() )
if( KMessShared::findResource( "data", "kmess/styles/" + chatStyle_ + '/' + chatStyle_ + ".xsl" ).isEmpty() )
{
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Auto-corrected chat & setting, setting 'dirty' to true.";
kmDebug() << "Auto-corrected chat & setting, setting 'dirty' to true.";
#endif
// Fall back to our new default.
@@ -849,12 +869,12 @@ void Account::saveProperties()
// Protect against unwanted usage
if( guestAccount_ )
{
kWarning() << "Application attempted to save a guest account!";
kmWarning() << "Application attempted to save a guest account!";
return;
}
if( deleted_ )
{
kWarning() << "Application attempted to save the deleted account again!";
kmWarning() << "Application attempted to save the deleted account again!";
return;
}
@@ -864,7 +884,7 @@ void Account::saveProperties()
if ( dirty_ )
{
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Account " << handle_ << " is 'dirty', save properties.";
kmDebug() << "Account " << handle_ << " is 'dirty', save properties.";
#endif
// Write new settings
@@ -941,7 +961,7 @@ void Account::saveProperties()
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
else
{
kDebug() << "Account " << handle_ << " is NOT 'dirty', don't save properties.";
kmDebug() << "Account " << handle_ << " is NOT 'dirty', don't save properties.";
}
#endif
@@ -988,7 +1008,7 @@ void Account::setContactListOptions( bool showNowListening, bool showContactEmai
if( showNowListening_ != showNowListening )
{
#ifdef KMESSDEBUG_ACCOUNT_GENERAL
kDebug() << "Now listening settings changed, notifying listeners.";
kmDebug() << "Now listening settings changed, notifying listeners.";
#endif
showNowListening_ = showNowListening;
@@ -997,7 +1017,7 @@ void Account::setContactListOptions( bool showNowListening, bool showContactEmai
dirty_ = true;
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Setting 'dirty' to true.";
kmDebug() << "Setting 'dirty' to true.";
#endif
}
@@ -1011,7 +1031,7 @@ void Account::setAutoreplyMessage( const QString& autoreplyMessage)
autoreplyMessage_ = autoreplyMessage;
dirty_ = true;
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Setting 'dirty' to true.";
kmDebug() << "Setting 'dirty' to true.";
#endif
}
}
@@ -1079,7 +1099,7 @@ void Account::setAutoreplyMessage( const QString& autoreplyMessage)
dirty_ = true;
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Setting 'dirty' to true.";
kmDebug() << "Setting 'dirty' to true.";
#endif
}
@@ -1107,7 +1127,7 @@ void Account::setChatLoggingInformation( bool saveChats, bool saveChatsToFile, A
dirty_ = true;
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Setting 'dirty' to true.";
kmDebug() << "Setting 'dirty' to true.";
#endif
}
@@ -1123,7 +1143,7 @@ void Account::setContactListDisplayMode( ContactListDisplayMode displayMode )
emit changedViewMode();
dirty_ = true;
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Setting 'dirty' to true.";
kmDebug() << "Setting 'dirty' to true.";
#endif
}
}
@@ -1142,7 +1162,7 @@ void Account::setEmailInformation( bool showEmail, bool showOtherFolders )
emit changedEmailDisplaySettings();
dirty_ = true;
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Setting 'dirty' to true.";
kmDebug() << "Setting 'dirty' to true.";
#endif
}
}
@@ -1171,7 +1191,7 @@ void Account::setFont( const QFont& font )
emit changedFontSettings();
dirty_ = true;
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Setting 'dirty' to true.";
kmDebug() << "Setting 'dirty' to true.";
#endif
}
}
@@ -1187,7 +1207,7 @@ void Account::setFontColor( const QString& fontColor )
emit changedFontSettings();
dirty_ = true;
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Setting 'dirty' to true.";
kmDebug() << "Setting 'dirty' to true.";
#endif
}
}
@@ -1216,7 +1236,7 @@ void Account::setFontInformation( const QFont& font, const QString &fontColor, c
dirty_ = true;
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Setting 'dirty' to true.";
kmDebug() << "Setting 'dirty' to true.";
#endif
}
@@ -1237,7 +1257,7 @@ void Account::setEmoticonStyle( const QString& emoticonStyle )
// Tell the account settings changed and need to be saved
dirty_ = true;
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Setting 'dirty' to true.";
kmDebug() << "Setting 'dirty' to true.";
#endif
}
}
@@ -1258,7 +1278,7 @@ void Account::setFriendlyName(const QString& newName)
dirty_ = true;
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Setting 'dirty' to true.";
kmDebug() << "Setting 'dirty' to true.";
#endif
}
@@ -1290,7 +1310,7 @@ void Account::setInitialStatus( Status status )
dirty_ = true;
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Setting 'dirty' to true.";
kmDebug() << "Setting 'dirty' to true.";
#endif
}
@@ -1311,7 +1331,7 @@ void Account::setListPictureSize( int mode )
dirty_ = true;
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Setting 'dirty' to true.";
kmDebug() << "Setting 'dirty' to true.";
#endif
}
@@ -1351,7 +1371,7 @@ void Account::setLoginInformation( QString handle, QString friendlyName, QString
dirty_ = true;
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Setting 'dirty' to true.";
kmDebug() << "Setting 'dirty' to true.";
#endif
}
@@ -1379,7 +1399,7 @@ void Account::setPersonalMessage(const QString& newMessage)
dirty_ = true;
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Setting 'dirty' to true.";
kmDebug() << "Setting 'dirty' to true.";
#endif
}
@@ -1401,7 +1421,7 @@ void Account::setPicturePath( const QString& picturePath )
dirty_ = true;
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Setting 'dirty' to true.";
kmDebug() << "Setting 'dirty' to true.";
#endif
}
@@ -1420,7 +1440,7 @@ void Account::setOriginalPicturePath( const QString& picturePath )
dirty_ = true;
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Setting 'dirty' to true.";
kmDebug() << "Setting 'dirty' to true.";
#endif
}
@@ -1448,7 +1468,7 @@ void Account::setSavePassword( bool savePassword )
dirty_ = true;
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Setting 'dirty' to true.";
kmDebug() << "Setting 'dirty' to true.";
#endif
}
@@ -1463,7 +1483,7 @@ void Account::setShowAllowedContacts( bool showAllowedContacts )
emit changedDisplaySettings();
dirty_ = true;
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Setting 'dirty' to true.";
kmDebug() << "Setting 'dirty' to true.";
#endif
}
}
@@ -1483,7 +1503,7 @@ void Account::setShowChatUserPicture( bool showChatUserPicture )
dirty_ = true;
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Setting 'dirty' to true.";
kmDebug() << "Setting 'dirty' to true.";
#endif
}
@@ -1503,7 +1523,7 @@ void Account::setShowContactListBird( bool showBird )
dirty_ = true;
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Setting 'dirty' to true.";
kmDebug() << "Setting 'dirty' to true.";
#endif
}
@@ -1523,7 +1543,7 @@ void Account::setShowEmptyGroups( bool showEmptyGroups )
dirty_ = true;
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Setting 'dirty' to true.";
kmDebug() << "Setting 'dirty' to true.";
#endif
}
@@ -1541,7 +1561,7 @@ void Account::setShowHistoryBox( bool showHistoryBox )
dirty_ = true;
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Setting 'dirty' to true.";
kmDebug() << "Setting 'dirty' to true.";
#endif
}
@@ -1554,7 +1574,7 @@ void Account::setShowNowListening( bool showNowListening )
emit changedNowListeningSettings();
#ifdef KMESSDEBUG_ACCOUNT_GENERAL
kDebug() << "Setting 'showNowListening' to " << showNowListening;
kmDebug() << "Setting 'showNowListening' to " << showNowListening;
#endif
}
@@ -1569,7 +1589,7 @@ void Account::setShowOfflineContacts( bool showOfflineContacts )
emit changedDisplaySettings();
dirty_ = true;
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Setting 'dirty' to true.";
kmDebug() << "Setting 'dirty' to true.";
#endif
}
}
@@ -1585,7 +1605,7 @@ void Account::setShowRemovedContacts( bool showRemovedContacts )
emit changedDisplaySettings();
dirty_ = true;
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Setting 'dirty' to true.";
kmDebug() << "Setting 'dirty' to true.";
#endif
}
}
@@ -1604,7 +1624,7 @@ void Account::setShowSearchBar( bool showSearchBar )
dirty_ = true;
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Setting 'dirty' to true.";
kmDebug() << "Setting 'dirty' to true.";
#endif
}
@@ -1622,7 +1642,7 @@ void Account::setShowSessionInfo( bool showSessionInfo )
dirty_ = true;
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Setting 'dirty' to true.";
kmDebug() << "Setting 'dirty' to true.";
#endif
}
@@ -1654,7 +1674,7 @@ void Account::setStatusOptions( bool useIdleTimer, int idleTime, bool hideNotifi
dirty_ = true;
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Setting 'dirty' to true.";
kmDebug() << "Setting 'dirty' to true.";
#endif
}
@@ -1684,7 +1704,7 @@ void Account::setUseAutologin( bool useAutologin)
useAutologin_ = useAutologin;
dirty_ = true;
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Setting 'dirty' to true.";
kmDebug() << "Setting 'dirty' to true.";
#endif
}
}
@@ -1697,7 +1717,7 @@ void Account::setUseEmoticons( bool useEmoticons)
useEmoticons_ = useEmoticons;
dirty_ = true;
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Setting 'dirty' to true.";
kmDebug() << "Setting 'dirty' to true.";
#endif
emit changedChatStyleSettings();
}
@@ -1726,7 +1746,7 @@ void Account::setShowPicture( bool showPicture )
updateMsnObject();
#ifdef KMESSDEBUG_ACCOUNT_DIRTY
kDebug() << "Setting 'dirty' to true.";
kmDebug() << "Setting 'dirty' to true.";
#endif
}
@@ -1752,13 +1772,13 @@ void Account::updateMsnObject()
if( picturePath != displayPicturePath_ )
{
#ifdef KMESSDEBUG_ACCOUNT_MSNOBJECT
kDebug() << "Replacing picture" << displayPicturePath_ << "with" << picturePath;
kmDebug() << "Replacing picture" << displayPicturePath_ << "with" << picturePath;
#endif
displayPicturePath_ = picturePath;
}
#ifdef KMESSDEBUG_ACCOUNT_MSNOBJECT
kDebug() << "Show the picture?" << showPicture_ << "- Set picture path:" << displayPicturePath_;
kmDebug() << "Show the picture?" << showPicture_ << "- Set picture path:" << displayPicturePath_;
#endif
if ( showPicture_ )
@@ -1774,7 +1794,7 @@ void Account::updateMsnObject()
}
else
{
kWarning() << "Picture could not be loaded: " << displayPicturePath_;
kmWarning() << "Picture could not be loaded: " << displayPicturePath_;
}
}
@@ -1782,12 +1802,8 @@ void Account::updateMsnObject()
if( oldMsnString != newMsnString )
{
#ifdef KMESSDEBUG_ACCOUNT_MSNOBJECT
kDebug() << "result is: '" << newMsnString << "'";
kmDebug() << "result is: '" << newMsnString << "'";
#endif
emit changedMsnObject();
}
}
#include "account.moc"
+3 -2
View File
@@ -57,8 +57,7 @@ class Account : public QObject
/// Available chat exporting formats
enum ChatExportFormat
{
EXPORT_XML /// Export the chat to XML
, EXPORT_HTML /// Export the chat to HTML
EXPORT_HTML /// Export the chat to HTML
, EXPORT_TEXT /// Export the chat to text
};
// Contact List view organization constants
@@ -286,6 +285,8 @@ class Account : public QObject
public: // Static public members
// Validate a contact email
static bool isValidEmail( QString email );
// Validate a Messenger handle. Escargot/NINA can also use plain usernames.
static bool isValidHandle( QString handle );
protected: // Protected methods
// Update the email-supported state (protected method)

Some files were not shown because too many files have changed in this diff Show More