diff --git a/CMakeLists.txt b/CMakeLists.txt
index 90ef1fb..127ae00 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -8,11 +8,13 @@ set(CMAKE_MODULE_PATH
${ECM_MODULE_PATH}
${CMAKE_CURRENT_SOURCE_DIR}/cmake)
+set(BUILD_WITH_QT6 ON CACHE BOOL "Build against Qt 6" FORCE)
+set(QT_DEFAULT_MAJOR_VERSION 6)
+
include(KDEInstallDirs)
include(KDECMakeSettings)
include(KDECompilerSettings NO_POLICY_SCOPE)
-set(QT_DEFAULT_MAJOR_VERSION 6)
find_package(Qt6 REQUIRED COMPONENTS Core Core5Compat DBus Gui Multimedia Network Test WebEngineWidgets Widgets Xml)
find_package(KF6 REQUIRED COMPONENTS
Codecs
diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt
index 030d4cf..83fb30d 100644
--- a/data/CMakeLists.txt
+++ b/data/CMakeLists.txt
@@ -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 )
diff --git a/data/icons/CMakeLists.txt b/data/icons/CMakeLists.txt
index d6ef8ab..fe445e0 100644
--- a/data/icons/CMakeLists.txt
+++ b/data/icons/CMakeLists.txt
@@ -1,12 +1,16 @@
-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 )
diff --git a/data/kmess.desktop b/data/kmess.desktop
index 36caed2..a0eb6a1 100644
--- a/data/kmess.desktop
+++ b/data/kmess.desktop
@@ -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
-
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 0773ec5..e2f155b 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -245,5 +245,5 @@ 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 )
diff --git a/src/initialview.cpp b/src/initialview.cpp
index 7cec6aa..9a42777 100644
--- a/src/initialview.cpp
+++ b/src/initialview.cpp
@@ -122,10 +122,12 @@ InitialView::InitialView( QWidget *parent )
this, SLOT ( slotConnectClicked() ) );
connect( rememberAccountCheckBox_, SIGNAL( stateChanged(int) ),
this, SLOT ( rememberAccountStateChanged(int) ) );
- connect( forgottenPasswordLabel_, SIGNAL( leftClickedUrl(const QString&) ),
- this, SLOT ( slotClickedUrl(const QString&) ) );
- connect( newAccountLabel_, SIGNAL( leftClickedUrl(const QString&) ),
- this, SLOT ( slotClickedUrl(const QString&) ) );
+ connect( forgottenPasswordLabel_, &KUrlLabel::leftClickedUrl, this, [this]() {
+ slotClickedUrl( forgottenPasswordLabel_->url() );
+ } );
+ connect( newAccountLabel_, &KUrlLabel::leftClickedUrl, this, [this]() {
+ slotClickedUrl( newAccountLabel_->url() );
+ } );
connect( statusLabel_, SIGNAL( linkActivated(const QString&) ),
this, SLOT ( slotClickedUrl(const QString&) ) );
connect( rememberPasswordCheckBox_, SIGNAL( stateChanged(int) ),
diff --git a/src/kmess.cpp b/src/kmess.cpp
index 277477c..e0ca150 100644
--- a/src/kmess.cpp
+++ b/src/kmess.cpp
@@ -1376,8 +1376,9 @@ bool KMess::initChatMaster()
msnNotificationConnection_, SLOT ( blockContact(QString) ) );
connect( chatMaster_, SIGNAL( unblockContact(QString) ),
msnNotificationConnection_, SLOT ( unblockContact(QString) ) );
- connect( chatMaster_, SIGNAL( addContact(QString) ),
- msnNotificationConnection_, SLOT ( addNewContact(QString, const QStringList) ) );
+ connect( chatMaster_, &ChatMaster::addContact, msnNotificationConnection_, [this]( const QString &handle ) {
+ msnNotificationConnection_->addNewContact( handle );
+ } );
connect( chatMaster_, SIGNAL( removeContact(QString,bool) ),
msnNotificationConnection_, SLOT ( removeContact(QString,bool) ) );
connect( chatMaster_, SIGNAL( allowContact(QString) ),
@@ -1506,7 +1507,8 @@ bool KMess::initNotifications()
// Add check whether the 'eventsrc' file can be found.
// The warning is a bit obtruisive, but should help to user to fix the problem.
- if( KMessShared::findResource( "data", "kmess/kmess.notifyrc" ).isNull() )
+ if( KMessShared::findResource( "data", "knotifications6/kmess.notifyrc" ).isNull()
+ && KMessShared::findResource( "data", "kmess/kmess.notifyrc" ).isNull() )
{
QString dirs( KMessShared::findResourceDirs( "data", QString() ).join("/kmess
") );
if( ! dirs.isEmpty() )
diff --git a/src/kmessinterface.cpp b/src/kmessinterface.cpp
index 6ca1d53..4c3ce34 100644
--- a/src/kmessinterface.cpp
+++ b/src/kmessinterface.cpp
@@ -207,7 +207,7 @@ void KMessInterface::createMenus()
// Add shortcut for Search in ContactList
- showSearchAction_->setShortcut( QKeySequence::fromString( tr( "Ctrl+f" ) ) );
+ actionCollection()->setDefaultShortcut( showSearchAction_, QKeySequence::fromString( tr( "Ctrl+f" ) ) );
// Disable the context menu, because there's no selection on start
contextMenuAction_->setEnabled( false );
@@ -223,9 +223,9 @@ void KMessInterface::createMenus()
this, SLOT ( changeStatus(QAction*) ) );
// Connect slots to signals for "View" menu
- connect( viewMode_, SIGNAL( triggered(int) ),
+ connect( viewMode_, SIGNAL( indexTriggered(int) ),
this, SLOT ( changeViewMode(int) ) );
- connect( listPictureSize_, SIGNAL( triggered(int) ),
+ connect( listPictureSize_, SIGNAL( indexTriggered(int) ),
this, SLOT ( changedListPictureSize(int) ) );
connect( showAllowedAction_, SIGNAL( triggered(bool) ),
this, SLOT ( toggleShowAllowed(bool) ) );
diff --git a/src/kmessview.cpp b/src/kmessview.cpp
index d797a8d..2d08cb6 100644
--- a/src/kmessview.cpp
+++ b/src/kmessview.cpp
@@ -729,8 +729,8 @@ bool KMessView::initContactPopup()
// Create the signal mappers needed to assign all actions to the move/copy contact slots
contactCopyMapper_ = new QSignalMapper( this );
contactMoveMapper_ = new QSignalMapper( this );
- connect( contactCopyMapper_, SIGNAL(mapped(const QString&)), this, SLOT(slotForwardCopyContact(const QString&)) );
- connect( contactMoveMapper_, SIGNAL(mapped(const QString&)), this, SLOT(slotForwardMoveContact(const QString&)) );
+ connect( contactCopyMapper_, SIGNAL(mappedString(const QString&)), this, SLOT(slotForwardCopyContact(const QString&)) );
+ connect( contactMoveMapper_, SIGNAL(mappedString(const QString&)), this, SLOT(slotForwardMoveContact(const QString&)) );
// Initialize the sub menus to copy/move contacts
copyContactToGroup_ = new KActionMenu( i18n("&Copy to Group"), this );
diff --git a/src/main.cpp b/src/main.cpp
index 9824b85..044fc0a 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -25,6 +25,7 @@
#include
#include
+#include
@@ -41,6 +42,8 @@ int main(int argc, char *argv[])
// Create the application before KAboutData and QCommandLineParser, as required by KF6.
KMessApplication kmessApp( argc, argv );
+ kmessApp.setDesktopFileName( "org.kmess.kmess" );
+ kmessApp.setWindowIcon( QIcon::fromTheme( QStringLiteral( "kmess" ) ) );
KLocalizedString::setApplicationDomain( "kmess" );
// Init about dialog.
diff --git a/src/network/extra/directconnectionbase.cpp b/src/network/extra/directconnectionbase.cpp
index 7d99034..dbd27be 100644
--- a/src/network/extra/directconnectionbase.cpp
+++ b/src/network/extra/directconnectionbase.cpp
@@ -412,7 +412,7 @@ bool DirectConnectionBase::openConnection( const QString &ipAddress, const quint
this, SLOT ( slotSocketDisconnected() ));
connect( socket_, SIGNAL( readyRead() ),
this, SLOT ( slotSocketDataReceived() ));
- connect( socket_, SIGNAL( error(QAbstractSocket::SocketError) ),
+ connect( socket_, SIGNAL( errorOccurred(QAbstractSocket::SocketError) ),
this, SLOT ( slotSocketError(QAbstractSocket::SocketError) ));
// Indicate we'll become a direct-connection client.
@@ -661,7 +661,7 @@ void DirectConnectionBase::slotAcceptConnection()
this, SLOT ( slotSocketDisconnected() ));
connect( socket_, SIGNAL( readyRead() ),
this, SLOT ( slotSocketDataReceived() ));
- connect( socket_, SIGNAL( error(QAbstractSocket::SocketError) ),
+ connect( socket_, SIGNAL( errorOccurred(QAbstractSocket::SocketError) ),
this, SLOT ( slotSocketError(QAbstractSocket::SocketError) ));
// Inform there is a connection
diff --git a/src/network/msnsockettcp.cpp b/src/network/msnsockettcp.cpp
index d98f10d..9b34405 100644
--- a/src/network/msnsockettcp.cpp
+++ b/src/network/msnsockettcp.cpp
@@ -80,7 +80,7 @@ MsnSocketTcp::MsnSocketTcp( ServerType serverType )
this, SLOT ( slotHostFound() ) );
connect( socket_, SIGNAL( readyRead() ),
this, SLOT ( slotSocketDataReceived() ) );
- connect( socket_, SIGNAL( error(QAbstractSocket::SocketError) ),
+ connect( socket_, SIGNAL( errorOccurred(QAbstractSocket::SocketError) ),
this, SLOT ( slotSocketError(QAbstractSocket::SocketError) ) );
connect( socket_, SIGNAL( proxyAuthenticationRequired(const QNetworkProxy&,QAuthenticator*) ),
this, SLOT ( proxyAuthenticate(const QNetworkProxy&,QAuthenticator*) ) );