Hello community,

here is the log from the commit of package katomic for openSUSE:Factory checked 
in at 2015-05-11 17:37:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/katomic (Old)
 and      /work/SRC/openSUSE:Factory/.katomic.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "katomic"

Changes:
--------
--- /work/SRC/openSUSE:Factory/katomic/katomic.changes  2015-03-11 
09:45:15.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.katomic.new/katomic.changes     2015-05-11 
17:37:56.000000000 +0200
@@ -1,0 +2,22 @@
+Sat Apr 11 12:43:29 UTC 2015 - tittiatc...@gmail.com
+
+- Update to KDE Applications 15.04.0
+   * KDE Applications 15.04.0
+   * https://www.kde.org/announcements/announce-applications-15.04.0.php
+
+
+-------------------------------------------------------------------
+Sat Mar 21 17:20:15 UTC 2015 - tittiatc...@gmail.com
+
+- Update to KDE Applications 15.03.95
+   * KDE Applications 15.04 RC
+
+
+-------------------------------------------------------------------
+Sun Mar  8 12:35:59 UTC 2015 - tittiatc...@gmail.com
+
+- Update to KDE Applications 15.03.80
+   * KDE Applications 15.04 Beta
+
+
+-------------------------------------------------------------------

Old:
----
  katomic-14.12.3.tar.xz

New:
----
  katomic-15.04.0.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ katomic.spec ++++++
--- /var/tmp/diff_new_pack.bxFPk9/_old  2015-05-11 17:37:57.000000000 +0200
+++ /var/tmp/diff_new_pack.bxFPk9/_new  2015-05-11 17:37:57.000000000 +0200
@@ -18,16 +18,33 @@
 
 Name:           katomic
 BuildRequires:  libkdegames-devel
-BuildRequires:  xz
+BuildRequires:  update-desktop-files
+BuildRequires:  pkgconfig(Qt5Widgets)
+BuildRequires:  pkgconfig(Qt5QuickWidgets)
+BuildRequires:  pkgconfig(Qt5Test)
+BuildRequires:  kconfig-devel
+BuildRequires:  kcoreaddons-devel
+BuildRequires:  kwidgetsaddons-devel
+BuildRequires:  ki18n-devel
+BuildRequires:  kguiaddons-devel
+BuildRequires:  kconfigwidgets-devel
+BuildRequires:  kitemviews-devel
+BuildRequires:  kiconthemes-devel
+BuildRequires:  kxmlgui-devel
+BuildRequires:  kio-devel
+BuildRequires:  knotifyconfig-devel
+BuildRequires:  kdelibs4support-devel
+BuildRequires:  knewstuff-devel
 Summary:        Sokoban-like logic game
 License:        GPL-2.0+
 Group:          Amusements/Games/Board/Puzzle
 Url:            http://www.kde.org
-Version:        14.12.3
+Version:        15.04.0
 Release:        0
 Source0:        katomic-%{version}.tar.xz
+Obsoletes:      %{name}5 < %{version}
+Provides:       %{name}5 = %{version}
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
-%kde4_runtime_requires
 
 %description
 KAtomic is a thinking game where you have to form chemical molecules
@@ -38,14 +55,12 @@
 %setup -q -n katomic-%{version}
 
 %build
-  %cmake_kde4 -d build
+  %cmake_kf5 -d build
   %make_jobs
 
 %install
-  cd build
-  %kde4_makeinstall
-  %suse_update_desktop_file -r katomic         Game LogicGame
-  %kde_post_install
+  %kf5_makeinstall -C build
+  %suse_update_desktop_file -r org.kde.katomic         Game LogicGame
 
 %post -p /sbin/ldconfig
 
@@ -54,12 +69,14 @@
 %files 
 %defattr(-,root,root)
 %doc COPYING COPYING.DOC
-%{_kde4_bindir}/katomic
-%{_kde4_htmldir}/en/katomic/
-%{_kde4_iconsdir}/hicolor/*/apps/katomic.*
-%{_kde4_appsdir}/katomic/
-%{_kde4_appsdir}/kconf_update/katomic-levelset*
-%{_kde4_configdir}/katomic.knsrc
-%{_kde4_applicationsdir}/katomic.desktop
+%{_kf5_bindir}/katomic
+%{_kf5_htmldir}/en/katomic/
+%{_kf5_iconsdir}/hicolor/*/apps/katomic.*
+%{_kf5_appsdir}/katomic/
+%{_kf5_appsdir}/kconf_update/katomic-levelset*
+%{_kf5_configdir}/katomic.knsrc
+%{_kf5_applicationsdir}/org.kde.katomic.desktop
+%_datadir/appdata/katomic.appdata.xml
+%_datadir/kxmlgui5/katomic/
 
 %changelog

++++++ katomic-14.12.3.tar.xz -> katomic-15.04.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/katomic-14.12.3/CMakeLists.txt 
new/katomic-15.04.0/CMakeLists.txt
--- old/katomic-14.12.3/CMakeLists.txt  2014-12-30 09:53:39.000000000 +0100
+++ new/katomic-15.04.0/CMakeLists.txt  2015-04-06 00:56:33.000000000 +0200
@@ -1,15 +1,39 @@
 project(katomic)
 
-if(NOT COMPILING_KDEGAMES)
-       find_package(KDE4 REQUIRED)
-       include(KDE4Defaults)
-       include(MacroLibrary)
-       find_package(KDEGames 4.9.0 REQUIRED)
-
-       add_definitions(${QT_DEFINITIONS} ${KDE4_DEFINITIONS})
-       add_definitions(-DQT_USE_FAST_CONCATENATION -DQT_USE_FAST_OPERATOR_PLUS)
-       include_directories(${KDEGAMES_INCLUDE_DIRS} ${KDE4_INCLUDES} 
${QDBUS_INCLUDE_DIRS})
-endif(NOT COMPILING_KDEGAMES)
+cmake_minimum_required (VERSION 2.8.12 FATAL_ERROR)
+set (QT_MIN_VERSION "5.3.0")
+
+find_package(ECM 1.3.0 REQUIRED CONFIG)
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} 
${ECM_KDE_MODULE_DIR})
+
+find_package(Qt5 ${QT_MIN_VERSION} REQUIRED NO_MODULE COMPONENTS Widgets )
+find_package(KF5 REQUIRED COMPONENTS 
+    CoreAddons 
+    Config 
+    WidgetsAddons 
+    Config 
+    I18n 
+    GuiAddons 
+    ConfigWidgets 
+    ItemViews 
+    IconThemes 
+    XmlGui
+    KIO
+    NotifyConfig
+    NewStuff
+    )
+
+find_package(KF5KDEGames 4.9.0 REQUIRED)
+
+include(FeatureSummary)
+include(ECMInstallIcons)
+include(KDEInstallDirs)
+include(KDECompilerSettings)
+include(KDECMakeSettings)
+
+add_definitions(-DQT_USE_FAST_CONCATENATION -DQT_USE_FAST_OPERATOR_PLUS)
+add_definitions(-DTRANSLATION_DOMAIN="katomic")
+
 
 add_subdirectory( levels )
 add_subdirectory( doc )
@@ -28,28 +52,30 @@
    levelsetdelegate.cpp
    chooselevelsetdialog.cpp )
 
-kde4_add_kcfg_files(katomic_SRCS prefs.kcfgc)
-kde4_add_ui_files(katomic_SRCS levelsetwidget.ui)
+kconfig_add_kcfg_files(katomic_SRCS prefs.kcfgc)
+ki18n_wrap_ui(katomic_SRCS levelsetwidget.ui)
 
-kde4_add_app_icon(katomic_SRCS 
"${CMAKE_CURRENT_SOURCE_DIR}/hi*-app-katomic.png")
-kde4_add_executable(katomic ${katomic_SRCS})
+#kde4_add_app_icon(katomic_SRCS 
"${CMAKE_CURRENT_SOURCE_DIR}/hi*-app-katomic.png")
+add_executable(katomic ${katomic_SRCS})
 
-target_link_libraries(katomic  ${KDE4_KIO_LIBS} ${KDE4_KDEUI_LIBS} 
${KDE4_KNEWSTUFF3_LIBS} kdegames )
+target_link_libraries(katomic  KF5::KIOCore  KF5::NewStuff KF5KDEGames 
KF5::I18n KF5::DBusAddons KF5::NewStuff)
 
 install(TARGETS katomic  ${INSTALL_TARGETS_DEFAULT_ARGS} )
 
 
 ########### install files ###############
 
-install( PROGRAMS katomic.desktop  DESTINATION  ${XDG_APPS_INSTALL_DIR} )
-install( FILES katomicui.rc  DESTINATION  ${DATA_INSTALL_DIR}/katomic )
+install( PROGRAMS org.kde.katomic.desktop  DESTINATION  
${XDG_APPS_INSTALL_DIR} )
+install( FILES katomic.appdata.xml DESTINATION  ${DATA_INSTALL_DIR}/appdata )
+install( FILES katomicui.rc  DESTINATION  ${KXMLGUI_INSTALL_DIR}/katomic )
 install( FILES default_theme.svgz  DESTINATION  
${DATA_INSTALL_DIR}/katomic/pics/ )
 # ^^^ default_theme.desktop is not installed at the moment
 install( FILES katomic.knsrc  DESTINATION  ${CONFIG_INSTALL_DIR} )
 
-kde4_install_icons( ${ICON_INSTALL_DIR}   )
+ecm_install_icons(ICONS hi128-apps-katomic.png  hi16-apps-katomic.png  
hi22-apps-katomic.png  hi32-apps-katomic.png  hi48-apps-katomic.png  
hi64-apps-katomic.png DESTINATION ${ICON_INSTALL_DIR}   )
 
 if(NOT WIN32)
   install( PROGRAMS katomic-levelset-upd.pl DESTINATION  
${KCONF_UPDATE_INSTALL_DIR} )
   install( FILES katomic-levelset.upd DESTINATION  ${KCONF_UPDATE_INSTALL_DIR} 
)
 endif(NOT WIN32)
+feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES 
FATAL_ON_MISSING_REQUIRED_PACKAGES)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/katomic-14.12.3/chooselevelsetdialog.cpp 
new/katomic-15.04.0/chooselevelsetdialog.cpp
--- old/katomic-14.12.3/chooselevelsetdialog.cpp        2014-12-30 
09:53:39.000000000 +0100
+++ new/katomic-15.04.0/chooselevelsetdialog.cpp        2015-04-06 
00:56:33.000000000 +0200
@@ -22,9 +22,14 @@
  ********************************************************************/
 #include "chooselevelsetdialog.h"
 
-#include <KStandardDirs>
-#include <KDebug>
-#include <KNS3/KNewStuffButton>
+
+#include <QDebug>
+#include <KNS3/Button>
+#include <KConfigGroup>
+#include <QDialogButtonBox>
+#include <QPushButton>
+#include <QVBoxLayout>
+#include <QDir>
 
 #include "levelset.h"
 #include "levelsetdelegate.h"
@@ -32,12 +37,22 @@
 #include "commondefs.h"
 
 ChooseLevelSetDialog::ChooseLevelSetDialog(QWidget* parent)
-    : KDialog(parent)
+    : QDialog(parent)
 {
     setAttribute(Qt::WA_DeleteOnClose);
 
-    setCaption(i18n("Level Sets"));
-    setButtons(KDialog::Ok | KDialog::Apply | KDialog::Cancel);
+    setWindowTitle(i18n("Level Sets"));
+    m_buttonBox = new 
QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Cancel|QDialogButtonBox::Apply);
+    QWidget *mainWidget = new QWidget(this);
+    QVBoxLayout *mainLayout = new QVBoxLayout;
+    setLayout(mainLayout);
+    mainLayout->addWidget(mainWidget);
+    QPushButton *okButton = m_buttonBox->button(QDialogButtonBox::Ok);
+    okButton->setDefault(true);
+    okButton->setShortcut(Qt::CTRL | Qt::Key_Return);
+    connect(m_buttonBox->button(QDialogButtonBox::Ok), &QPushButton::clicked, 
this, &ChooseLevelSetDialog::slotOkClicked);
+    connect(m_buttonBox->button(QDialogButtonBox::Apply), 
&QPushButton::clicked, this, &ChooseLevelSetDialog::slotApplyClicked);
+    connect(m_buttonBox, &QDialogButtonBox::rejected, this, 
&ChooseLevelSetDialog::reject);
 
     QWidget* chooseWidget = new QWidget(this);
     m_ui.setupUi(chooseWidget);
@@ -47,15 +62,16 @@
 
     m_ui.m_pbNewStuff->setConfigFile("katomic.knsrc");
 
-    setMainWidget(chooseWidget);
+    mainLayout->addWidget(chooseWidget);
+    mainLayout->addWidget(m_buttonBox);
+
 
     resize(550, 350);
 
     loadData();
 
-    connect(m_ui.m_lwLevelSets, 
SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)),
-            SLOT(updateApplyButton()));
-    connect(m_ui.m_pbNewStuff, SIGNAL(dialogFinished(KNS3::Entry::List)), 
SLOT(newStuffDone(KNS3::Entry::List)));
+    connect(m_ui.m_lwLevelSets, &QListWidget::currentItemChanged, this, 
&ChooseLevelSetDialog::updateApplyButton);
+    connect(m_ui.m_pbNewStuff, &KNS3::Button::dialogFinished, this, 
&ChooseLevelSetDialog::newStuffDone);
 }
 
 void ChooseLevelSetDialog::newStuffDone(const KNS3::Entry::List& entries)
@@ -67,8 +83,14 @@
 void ChooseLevelSetDialog::loadData()
 {
     m_ui.m_lwLevelSets->clear();
-
-    QStringList fileList = KGlobal::dirs()->findAllResources("appdata", 
"levels/*.dat", KStandardDirs::NoDuplicates);
+    QStringList fileList;
+    const QStringList dirs = 
QStandardPaths::locateAll(QStandardPaths::DataLocation, "levels", 
QStandardPaths::LocateDirectory);
+    Q_FOREACH (const QString& dir, dirs) {
+        const QStringList fileNames = QDir(dir).entryList(QStringList() << 
QStringLiteral("*.dat"));
+        Q_FOREACH (const QString& file, fileNames) {
+            fileList.append(dir + '/' + file);
+        }
+    }
 
     LevelSet ls;
     foreach (const QString& fileName, fileList)
@@ -78,7 +100,7 @@
         if (!visibleName.isEmpty())
         {
             QListWidgetItem* item = new QListWidgetItem;
-            item->setIcon(KIcon( QLatin1String( "katomic" )));
+            item->setIcon(QIcon::fromTheme( QLatin1String( "katomic" )));
             item->setText(visibleName);
             item->setData(KAtomic::LevelSetNameRole, ls.name());
             item->setData(KAtomic::LevelSetDescriptionRole, ls.description());
@@ -113,22 +135,28 @@
     }
 }
 
-void ChooseLevelSetDialog::slotButtonClicked(int but)
+void ChooseLevelSetDialog::saveSettings()
 {
-    if (but == KDialog::Ok || but == KDialog::Apply)
-    {
-        QListWidgetItem* item = m_ui.m_lwLevelSets->currentItem();
-        if (item)
-        {
-            QString levelSetName = 
item->data(KAtomic::LevelSetNameRole).toString();
-            emit levelSetChanged(levelSetName);
-
-            m_gameCurrentLevelSetName = levelSetName;
-            updateApplyButton();
-        }
+    QListWidgetItem* item = m_ui.m_lwLevelSets->currentItem();
+    if (item)
+    {   
+        QString levelSetName = 
item->data(KAtomic::LevelSetNameRole).toString();
+        emit levelSetChanged(levelSetName);
+            
+        m_gameCurrentLevelSetName = levelSetName;
+        updateApplyButton();
     }
+}
 
-    KDialog::slotButtonClicked(but);
+void ChooseLevelSetDialog::slotApplyClicked()
+{
+    saveSettings();
+}
+
+void ChooseLevelSetDialog::slotOkClicked()
+{
+    saveSettings();
+    accept();
 }
 
 void ChooseLevelSetDialog::updateApplyButton()
@@ -136,6 +164,6 @@
     QListWidgetItem* item = m_ui.m_lwLevelSets->currentItem();
     if (item)
     {
-        enableButtonApply(item->data(KAtomic::LevelSetNameRole).toString() != 
m_gameCurrentLevelSetName);
+        
m_buttonBox->button(QDialogButtonBox::Apply)->setEnabled(item->data(KAtomic::LevelSetNameRole).toString()
 != m_gameCurrentLevelSetName);
     }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/katomic-14.12.3/chooselevelsetdialog.h 
new/katomic-15.04.0/chooselevelsetdialog.h
--- old/katomic-14.12.3/chooselevelsetdialog.h  2014-12-30 09:53:39.000000000 
+0100
+++ new/katomic-15.04.0/chooselevelsetdialog.h  2015-04-06 00:56:33.000000000 
+0200
@@ -24,11 +24,11 @@
 #ifndef CHOOSE_LEVEL_SET_DIALOG_H
 #define CHOOSE_LEVEL_SET_DIALOG_H
 
-#include <KDialog>
+#include <QDialog>
 
 #include "ui_levelsetwidget.h"
-
-class ChooseLevelSetDialog : public KDialog
+class QDialogButtonBox;
+class ChooseLevelSetDialog : public QDialog
 {
     Q_OBJECT
 
@@ -42,15 +42,18 @@
     void levelSetChanged(QString);
 
 protected Q_SLOTS:
-    void slotButtonClicked(int);
     void newStuffDone(const KNS3::Entry::List& entries);
 
 private Q_SLOTS:
     void updateApplyButton();
+    void slotApplyClicked();
+    void slotOkClicked();
 
 private:
+    void saveSettings();
     Ui::LevelSetWidget m_ui;
     QString m_gameCurrentLevelSetName;
+    QDialogButtonBox *m_buttonBox;
 };
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/katomic-14.12.3/doc/CMakeLists.txt 
new/katomic-15.04.0/doc/CMakeLists.txt
--- old/katomic-14.12.3/doc/CMakeLists.txt      2014-12-30 09:53:39.000000000 
+0100
+++ new/katomic-15.04.0/doc/CMakeLists.txt      2015-04-06 00:56:33.000000000 
+0200
@@ -1,4 +1,4 @@
 ########### install files ###############
 #
 #
-kde4_create_handbook(index.docbook INSTALL_DESTINATION ${HTML_INSTALL_DIR}/en 
SUBDIR katomic)
+kdoctools_create_handbook(index.docbook INSTALL_DESTINATION 
${HTML_INSTALL_DIR}/en SUBDIR katomic)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/katomic-14.12.3/doc/index.docbook 
new/katomic-15.04.0/doc/index.docbook
--- old/katomic-14.12.3/doc/index.docbook       2014-12-30 09:53:39.000000000 
+0100
+++ new/katomic-15.04.0/doc/index.docbook       2015-04-06 00:56:33.000000000 
+0200
@@ -1,6 +1,6 @@
 <?xml version="1.0" ?>
 <!--IMPORTANT: please note that'do not change this!' notice does not apply to 
translators -->
-<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" 
"dtd/kdex.dtd" [
+<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN" 
"dtd/kdedbx45.dtd" [
   <!ENTITY kappname "&katomic;">
   <!ENTITY kappversion "3.0"><!--Application version. Use this variable 
everywhere it's needed.-->
   <!ENTITY package "kdegames">  <!-- do not change this! -->
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/katomic-14.12.3/fielditem.cpp 
new/katomic-15.04.0/fielditem.cpp
--- old/katomic-14.12.3/fielditem.cpp   2014-12-30 09:53:39.000000000 +0100
+++ new/katomic-15.04.0/fielditem.cpp   2015-04-06 00:56:33.000000000 +0200
@@ -28,8 +28,8 @@
 #include <QPainter>
 #include <QTimeLine>
 
-#include <kdebug.h>
-#include <klocale.h>
+#include <QDebug>
+#include <KLocalizedString>
 #include "molecule.h"
 #include "playfield.h"
 
@@ -50,7 +50,7 @@
     setOpacity(0.0); //start invisible
     m_timeLine = new QTimeLine(200);
     m_timeLine->setFrameRange( 0, 30 );
-    connect(m_timeLine, SIGNAL(valueChanged(qreal)), SLOT(setOpacity(qreal)) );
+    connect(m_timeLine, &QTimeLine::valueChanged, this, 
&ArrowFieldItem::setOpacity);
 }
 
 ArrowFieldItem::~ArrowFieldItem()
@@ -197,9 +197,10 @@
 // ----------------- MoleculePreviewItem ----------------------------
 
 MoleculePreviewItem::MoleculePreviewItem( PlayField* scene )
-    : QGraphicsItem( 0, scene ), m_renderer(scene->renderer()), m_width(0),
+    : QGraphicsItem( 0 ), m_renderer(scene->renderer()), m_width(0),
       m_atomSize(20), m_maxAtomSize(30), m_mol( 0 )
 {
+   scene->addItem(this);
 }
 
 MoleculePreviewItem::~MoleculePreviewItem()
@@ -262,4 +263,4 @@
     painter->restore();
 }
 
-#include "fielditem.moc"
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/katomic-14.12.3/gamewidget.cpp 
new/katomic-15.04.0/gamewidget.cpp
--- old/katomic-14.12.3/gamewidget.cpp  2014-12-30 09:53:39.000000000 +0100
+++ new/katomic-15.04.0/gamewidget.cpp  2015-04-06 00:56:33.000000000 +0200
@@ -29,12 +29,11 @@
 #include <QVBoxLayout>
 #include <QTimer> // Next Level after N seconds
 #include <kmessagebox.h>
-#include <klocale.h>
-#include <kstandarddirs.h>
+#include <KLocalizedString>
 #include <kconfig.h>
-#include <kglobalsettings.h>
-#include <kfiledialog.h>
-#include <kdebug.h>
+#include <qfiledialog.h>
+#include <QDebug>
+#include <QUrl>
 
 GameWidget::GameWidget ( const QString& levelSet, QWidget *parent )
     : QWidget( parent ), m_allowAnyLevelSwitch( false ), m_moves(0), m_level(0)
@@ -66,13 +65,13 @@
 
     top->addWidget(m_view, 1);
 
-    connect (m_playField, SIGNAL (gameOver(int)), SLOT(gameOver(int)));
-    connect (m_playField, SIGNAL (updateMoves(int)), SLOT(updateMoves(int)));
+    connect(m_playField, &PlayField::gameOver, this, &GameWidget::gameOver);
+    connect(m_playField, &PlayField::updateMoves, this, 
&GameWidget::updateMoves);
 
     // Next level after some seconds after ending the game. See gameOver, 
nextLevel and prevLevel
     m_timer = new QTimer(this);
     m_timer->setSingleShot(true);
-    connect (m_timer, SIGNAL(timeout()), this, SLOT(nextLevel()));
+    connect(m_timer, &QTimer::timeout, this, &GameWidget::nextLevel);
 
     setLevelSet(levelSet);
 }
@@ -87,7 +86,7 @@
 {
     if (m_levelSet.name() == levelSet)
     {
-        kDebug() << "level set named" << levelSet << "is already loaded";
+        //qDebug() << "level set named" << levelSet << "is already loaded";
         return true;
     }
 
@@ -95,7 +94,7 @@
     if (!res)
     {
         KMessageBox::error(this, i18n("Failed to load level set \"%1\". Check 
if it is installed on your computer.", levelSet));
-        kDebug() << "failed to load levelset" << levelSet;
+        //qDebug() << "failed to load levelset" << levelSet;
         return false;
     }
 
@@ -190,8 +189,9 @@
 
         saveLastPlayedLevel();
     }
-    else
-        kDebug() << "failed to load level" << l;
+    else {
+        //qDebug() << "failed to load level" << l;
+    }
 }
 
 void GameWidget::restartLevel()
@@ -201,7 +201,7 @@
 
 void GameWidget::saveGame()
 {
-    QString fileName = KFileDialog::getSaveFileName( KUrl(), "*.katomic", this 
);
+    QString fileName = QFileDialog::getSaveFileName( this, QString(), 
QString(), "*.katomic" );
     if(fileName.isEmpty())
         return;
     KConfig config(fileName, KConfig::SimpleConfig);
@@ -213,7 +213,7 @@
 
 void GameWidget::loadGame()
 {
-    QString fileName = KFileDialog::getOpenFileName( KUrl(), "*.katomic", this 
);
+    QString fileName = QFileDialog::getOpenFileName( this, QString(), 
QString(), "*.katomic" );
     if(fileName.isEmpty())
         return;
     KConfig config(fileName, KConfig::SimpleConfig);
@@ -221,7 +221,7 @@
     QString levelSet = gr.readEntry("LevelSet");
     if (levelSet.isEmpty())
     {
-        kDebug() << "note: savegame file doesn't contain info about levelset, 
assuming default one";
+        //qDebug() << "note: savegame file doesn't contain info about 
levelset, assuming default one";
         levelSet = DEFAULT_LEVELSET_NAME;
     }
 
@@ -275,7 +275,7 @@
 
 void GameWidget::saveLastPlayedLevel()
 {
-    KSharedConfigPtr cfg = KGlobal::config();
+    KSharedConfigPtr cfg = KSharedConfig::openConfig();
     KConfigGroup grp(cfg, m_levelSet.name());
     grp.writeEntry("LastPlayedLevel", m_level);
 
@@ -284,27 +284,27 @@
 
 void GameWidget::saveMaxAccessibleLevel(int level)
 {
-    KSharedConfigPtr cfg = KGlobal::config();
+    KSharedConfigPtr cfg = KSharedConfig::openConfig();
     KConfigGroup grp(cfg, m_levelSet.name());
     grp.writeEntry("MaxAccessibleLevel", level);
 }
 
 int GameWidget::lastPlayedLevel() const
 {
-    KSharedConfigPtr cfg = KGlobal::config();
+    KSharedConfigPtr cfg = KSharedConfig::openConfig();
     KConfigGroup grp(cfg, m_levelSet.name());
     int lastPlayed = grp.readEntry("LastPlayedLevel", 1);
     lastPlayed = qMax(1, lastPlayed); // can't be less than 1
-    kDebug() << "last played level:" << lastPlayed;
+    //qDebug() << "last played level:" << lastPlayed;
     return lastPlayed;
 }
 
 int GameWidget::maxAccessibleLevel() const
 {
-    KSharedConfigPtr cfg = KGlobal::config();
+    KSharedConfigPtr cfg = KSharedConfig::openConfig();
     KConfigGroup grp(cfg, m_levelSet.name());
     int maxAccessible = grp.readEntry("MaxAccessibleLevel", 1);
-    kDebug() << "max accessible level:" << maxAccessible;
+    //qDebug() << "max accessible level:" << maxAccessible;
     return maxAccessible;
 }
 
@@ -320,4 +320,4 @@
     return m_level > 1;
 }
 
-#include "gamewidget.moc"
+
Files old/katomic-14.12.3/hi128-app-katomic.png and 
new/katomic-15.04.0/hi128-app-katomic.png differ
Files old/katomic-14.12.3/hi128-apps-katomic.png and 
new/katomic-15.04.0/hi128-apps-katomic.png differ
Files old/katomic-14.12.3/hi16-app-katomic.png and 
new/katomic-15.04.0/hi16-app-katomic.png differ
Files old/katomic-14.12.3/hi16-apps-katomic.png and 
new/katomic-15.04.0/hi16-apps-katomic.png differ
Files old/katomic-14.12.3/hi22-app-katomic.png and 
new/katomic-15.04.0/hi22-app-katomic.png differ
Files old/katomic-14.12.3/hi22-apps-katomic.png and 
new/katomic-15.04.0/hi22-apps-katomic.png differ
Files old/katomic-14.12.3/hi32-app-katomic.png and 
new/katomic-15.04.0/hi32-app-katomic.png differ
Files old/katomic-14.12.3/hi32-apps-katomic.png and 
new/katomic-15.04.0/hi32-apps-katomic.png differ
Files old/katomic-14.12.3/hi48-app-katomic.png and 
new/katomic-15.04.0/hi48-app-katomic.png differ
Files old/katomic-14.12.3/hi48-apps-katomic.png and 
new/katomic-15.04.0/hi48-apps-katomic.png differ
Files old/katomic-14.12.3/hi64-app-katomic.png and 
new/katomic-15.04.0/hi64-app-katomic.png differ
Files old/katomic-14.12.3/hi64-apps-katomic.png and 
new/katomic-15.04.0/hi64-apps-katomic.png differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/katomic-14.12.3/highscores.cpp 
new/katomic-15.04.0/highscores.cpp
--- old/katomic-14.12.3/highscores.cpp  2014-12-30 09:53:39.000000000 +0100
+++ new/katomic-15.04.0/highscores.cpp  2015-04-06 00:56:33.000000000 +0200
@@ -18,15 +18,17 @@
 #include "highscores.h"
 
 #include <kuser.h>
-#include <kstandarddirs.h>
+
 #include <kconfiggroup.h>
+#include <QStandardPaths>
+#include <KSharedConfig>
 
 KAtomicHighscores::KAtomicHighscores()
 {
     KUser user;
     m_playerName =  user.property(KUser::FullName).toString().isEmpty() ? 
user.loginName() : user.property(KUser::FullName).toString();
 
-    m_hsFile = KSharedConfig::openConfig( 
KStandardDirs::locateLocal("appdata", "highscores"), KConfig::SimpleConfig );
+    m_hsFile = KSharedConfig::openConfig( 
QStandardPaths::writableLocation(QStandardPaths::DataLocation) + 
QLatin1Char('/') + "highscores", KConfig::SimpleConfig);
 }
 
 bool KAtomicHighscores::addScore( int numMoves, const QString& levelSetName, 
int level )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/katomic-14.12.3/katomic.appdata.xml 
new/katomic-15.04.0/katomic.appdata.xml
--- old/katomic-14.12.3/katomic.appdata.xml     1970-01-01 01:00:00.000000000 
+0100
+++ new/katomic-15.04.0/katomic.appdata.xml     2015-04-06 00:56:33.000000000 
+0200
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<component type="desktop">
+  <id>org.kde.katomic.desktop</id>
+  <metadata_license>CC0-1.0</metadata_license>
+  <project_license>GPL-2.0+</project_license>
+  <name>KAtomic</name>
+  <name xml:lang="ast">KAtomic</name>
+  <name xml:lang="ca">KAtomic</name>
+  <name xml:lang="cs">KAtomic</name>
+  <name xml:lang="da">KAtomic</name>
+  <name xml:lang="de">KAtomic</name>
+  <name xml:lang="en-GB">KAtomic</name>
+  <name xml:lang="es">KAtomic</name>
+  <name xml:lang="fi">KAtomic</name>
+  <name xml:lang="gl">KAtomic</name>
+  <name xml:lang="it">KAtomic</name>
+  <name xml:lang="nl">KAtomic</name>
+  <name xml:lang="pl">Atomy</name>
+  <name xml:lang="pt">KAtomic</name>
+  <name xml:lang="pt-BR">KAtomic</name>
+  <name xml:lang="ru">KAtomic</name>
+  <name xml:lang="sk">KAtomic</name>
+  <name xml:lang="sl">KAtomic</name>
+  <name xml:lang="sr">К‑атомика</name>
+  <name xml:lang="sr-Latn">K‑atomika</name>
+  <name xml:lang="sr-ijekavian">К‑атомика</name>
+  <name xml:lang="sr-ijekavianlatin">K‑atomika</name>
+  <name xml:lang="sv">Katom</name>
+  <name xml:lang="uk">KAtomic</name>
+  <name xml:lang="x-test">xxKAtomicxx</name>
+  <name xml:lang="zh-TW">KAtomic</name>
+  <summary>Sokoban-like Logic Game</summary>
+  <summary xml:lang="ca">Joc de lògica similar al Sokoban</summary>
+  <summary xml:lang="cs">Logická hra jako Sokoban</summary>
+  <summary xml:lang="en-GB">Sokoban-like Logic Game</summary>
+  <summary xml:lang="es">Juego de lógica parecido al Sokoban</summary>
+  <summary xml:lang="fi">Sokoban-tyylinen logiikkapeli</summary>
+  <summary xml:lang="gl">Xogo de lóxica ao estilo do Sokoban</summary>
+  <summary xml:lang="it">Gioco di logica simile a Sokoban</summary>
+  <summary xml:lang="nl">Sokoban-achtig logisch spel</summary>
+  <summary xml:lang="pl">Gra logiczna typu Sokoban</summary>
+  <summary xml:lang="pt">Jogo de Lógica Semelhante ao Sokoban</summary>
+  <summary xml:lang="pt-BR">Jogo Lógico parecido com Sokoban</summary>
+  <summary xml:lang="ru">Логическая игра, произошедшая от игры 
Sokoban</summary>
+  <summary xml:lang="sk">Logická hra ako Sokoban</summary>
+  <summary xml:lang="sl">Logična igra podobna Sokobanu</summary>
+  <summary xml:lang="sr">Логичка игра налик на Сокобан</summary>
+  <summary xml:lang="sr-Latn">Logička igra nalik na Sokoban</summary>
+  <summary xml:lang="sr-ijekavian">Логичка игра налик на Сокобан</summary>
+  <summary xml:lang="sr-ijekavianlatin">Logička igra nalik na Sokoban</summary>
+  <summary xml:lang="sv">Sokoban-liknande logiskt spel</summary>
+  <summary xml:lang="uk">Логічна гра, подібна до гри «Сокобан»</summary>
+  <summary xml:lang="x-test">xxSokoban-like Logic Gamexx</summary>
+  <summary xml:lang="zh-TW">倉庫番(sokoban)式的智力遊戲</summary>
+  <description>
+    <p>
+      KAtomic is a fun educational game built around molecular geometry.
+      It employs simplistic two-dimensional looks at different chemical 
elements.
+    </p>
+    <p xml:lang="ca">El KAtomic és un joc educatiu divertit construït al 
voltant de la geometria molecular. Fa servir aparences bidimensionals 
simplificades de elements químics diferents.</p>
+    <p xml:lang="en-GB">KAtomic is a fun educational game built around 
molecular geometry. It employs simplistic two-dimensional looks at different 
chemical elements.</p>
+    <p xml:lang="es">KAtomic es un divertido juego educativo basado en la 
geometría molecular. Emplea vistas bidimensionales simplificadas de diferentes 
elementos químicos.</p>
+    <p xml:lang="gl">KAtomic é un xogo divertido e educativo sobre xeometría 
molecular. Nel óllanse visións simplistas en dúas dimensións de varios 
elementos químicos.</p>
+    <p xml:lang="it">KAtomic è un gioco divertente ed educativo, basato sulla 
geometria molecolare. Impiega una rappresentazione bidimensionale semplificata 
per gli elementi chimici.</p>
+    <p xml:lang="nl">KAtomic is een leuk educatief spel gebouwd rond 
moleculaire geometrie. Het gebruikt simplistische tweedimensionale beelden van 
verschillende chemische elementen.</p>
+    <p xml:lang="pl">KAtomic jest grą edukującą poprzez zabawę stworzoną wokół 
geometrii cząsteczek. Gra wykorzystuje proste dwuwymiarowe widoki różnych 
pierwiastków chemicznych.</p>
+    <p xml:lang="pt">O KAtomic é um jogo educativo divertido, construído em 
torno da geometria molecular. Ele aplica vistas simplistas bidimensionais para 
os diferentes elementos químicos.</p>
+    <p xml:lang="pt-BR">KAtomic é um jogo educativo divertido, construído em 
torno da geometria molecular. Ele aplica visuais simplistas bidimensionais para 
os diferentes elementos químicos.</p>
+    <p xml:lang="ru">KAtomic — развивающая игра, каждый уровень которой 
основан на схематическом представлении молекулы химического соединения.</p>
+    <p xml:lang="sk">KAtomic je zábavná výuková hra založená na molekulárnej 
geometrii. Používa jednoduchý dvojrozmerný pohľad na rôzne chemické prvky.</p>
+    <p xml:lang="sl">KAtomic je zabavna in poučna igra, temelječa na 
geometriji molekul. Predstavlja preprosti dvodimenzionalni pogled na različne 
kemijske molekule.</p>
+    <p xml:lang="sr">К‑атомика је забавна образовна игра која се бави 
молекуларном геометријом. Служи се поједностављеним дводимензионалним приказима 
разноврсних хемијских једињења.</p>
+    <p xml:lang="sr-Latn">K‑atomika je zabavna obrazovna igra koja se bavi 
molekularnom geometrijom. Služi se pojednostavljenim dvodimenzionalnim 
prikazima raznovrsnih hemijskih jedinjenja.</p>
+    <p xml:lang="sr-ijekavian">К‑атомика је забавна образовна игра која се 
бави молекуларном геометријом. Служи се поједностављеним дводимензионалним 
приказима разноврсних хемијских једињења.</p>
+    <p xml:lang="sr-ijekavianlatin">K‑atomika je zabavna obrazovna igra koja 
se bavi molekularnom geometrijom. Služi se pojednostavljenim dvodimenzionalnim 
prikazima raznovrsnih hemijskih jedinjenja.</p>
+    <p xml:lang="sv">Katom är ett roligt och lärorikt spel byggt omkring 
molekylgeometri. Det använder ett förenklat tvådimensionellt utseende för olika 
kemiska element.</p>
+    <p xml:lang="uk">KAtomic — цікава навчальна гра у побудову молекул з 
атомів. У грі ви матимете справу зі спрощеними двовимірними моделями різних 
хімічних сполук.</p>
+    <p xml:lang="x-test">xxKAtomic is a fun educational game built around 
molecular geometry. It employs simplistic two-dimensional looks at different 
chemical elements.xx</p>
+    <p xml:lang="zh-TW">KAtomic 是一款教育類的遊戲,以原子模型為背景。</p>
+  </description>
+  <url type="homepage">http://games.kde.org/game.php?game=katomic</url>
+  <url 
type="bugtracker">https://bugs.kde.org/enter_bug.cgi?format=guided&amp;product=katomic</url>
+  <url 
type="help">http://docs.kde.org/stable/en/kdegames/katomic/index.html</url>
+  <screenshots>
+    <screenshot type="default">
+      <image>http://kde.org/images/screenshots/katomic.png</image>
+    </screenshot>
+  </screenshots>
+  <project_group>KDE</project_group>
+</component>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/katomic-14.12.3/katomic.desktop 
new/katomic-15.04.0/katomic.desktop
--- old/katomic-14.12.3/katomic.desktop 2014-12-30 09:53:39.000000000 +0100
+++ new/katomic-15.04.0/katomic.desktop 1970-01-01 01:00:00.000000000 +0100
@@ -1,140 +0,0 @@
-[Desktop Entry]
-Name=KAtomic
-Name[af]=Katomic
-Name[ast]=KAtomic
-Name[be]=KAtomic
-Name[bn]=কে-অ্যাটমিক
-Name[br]=KAtomic
-Name[bs]=KAtomic
-Name[ca]=KAtomic
-Name[ca@valencia]=KAtomic
-Name[cs]=KAtomic
-Name[cy]=KAtomic
-Name[da]=KAtomic
-Name[de]=KAtomic
-Name[el]=KAtomic
-Name[en_GB]=KAtomic
-Name[eo]=KAtomic
-Name[es]=KAtomic
-Name[et]=KAtomic
-Name[eu]=KAtomic
-Name[fa]=اتمی
-Name[fi]=KAtomic
-Name[fr]=KAtomic
-Name[ga]=KAtomic
-Name[gl]=KAtomic
-Name[he]=KAtomic
-Name[hne]=के-एटामिक
-Name[hr]=KAtomic
-Name[hu]=KAtomic
-Name[is]=KAtomic
-Name[it]=KAtomic
-Name[ja]=KAtomic
-Name[kk]=KAtomic
-Name[km]=KAtomic
-Name[ko]=KAtomic
-Name[lt]=KAtomic
-Name[lv]=KAtomic
-Name[mk]=KAtomic
-Name[mr]=के-एटॉमिक
-Name[nb]=KAtomic
-Name[nds]=KAtomic
-Name[ne]=केडीई एटोमिक
-Name[nl]=KAtomic
-Name[nn]=KAtomic
-Name[pa]=ਕੇ-ਪਰਮਾਣੂ
-Name[pl]=Atomy
-Name[pt]=KAtomic
-Name[pt_BR]=KAtomic
-Name[ro]=KAtomic
-Name[ru]=KAtomic
-Name[se]=KAtomic
-Name[sk]=KAtomic
-Name[sl]=KAtomic
-Name[sq]=KAtomic
-Name[sr]=К‑атомика
-Name[sr@ijekavian]=К‑атомика
-Name[sr@ijekavianlatin]=K‑atomika
-Name[sr@latin]=K‑atomika
-Name[sv]=Katom
-Name[ta]=கேஅடாமிக்
-Name[te]=కెఎటామిక్
-Name[tg]=KАтомҳо
-Name[tr]=KAtomic
-Name[ug]=KAtomic
-Name[uk]=Веселі атоми
-Name[vi]=KAtomic
-Name[wa]=KAtomic
-Name[xh]=KAtomic
-Name[x-test]=xxKAtomicxx
-Name[zh_CN]=KAtomic
-Name[zh_TW]=KAtomic 原子
-Icon=katomic
-Type=Application
-Exec=katomic -caption %c
-X-DocPath=katomic/index.html
-GenericName=Sokoban-like Logic Game
-GenericName[ast]=Xuegu de lóxica asemeyáu al Sokoban
-GenericName[be]=Лагічная гульня тыпу Sokoban
-GenericName[bn]=সোকোবান-এর মত যুক্তির খেলা
-GenericName[bs]=Logička igra poput Sokoban-a
-GenericName[ca]=Joc de lògica similar al Sokoban
-GenericName[ca@valencia]=Joc de lògica similar al Sokoban
-GenericName[cs]=Logická hra jako Sokoban
-GenericName[cy]=Gêm Resymeg sy'n debyg i Sokoban
-GenericName[da]=Sokoban-lignende logisk spil
-GenericName[de]=„Sokoban“-Spiel
-GenericName[el]=Παιχνίδι λογικής παρόμοιο με το Sokoban
-GenericName[en_GB]=Sokoban-like Logic Game
-GenericName[eo]=Logikludo simila al Sokoban
-GenericName[es]=Juego de lógica similar al Sokoban
-GenericName[et]=Sokobani moodi loogikamäng
-GenericName[eu]=Sokoban-en antzeko joko logikoa
-GenericName[fa]=بازی منطق شبیه Sokoban
-GenericName[fi]=Sokoban-tyylinen logiikkapeli
-GenericName[fr]=Jeu de logique dans le style de Sokoban
-GenericName[ga]=Cluiche Loighce Cosúil le Sokoban
-GenericName[gl]=Xogo de lóxica ao estilo do Sokoban
-GenericName[he]=חיקוי Sokoban, משחק לוגי
-GenericName[hne]=सोकोबान जइसन तर्क वाले खेल
-GenericName[hr]=Logička igra poput Sokobana
-GenericName[hu]=Sokoban-szerű logikai játék
-GenericName[is]=Leikur sem líkist Sokoban
-GenericName[it]=Gioco di logica simile a Sokoban
-GenericName[ja]=倉庫番のような論理ゲーム
-GenericName[kk]=Сокобан-секілді логикалық ойын
-GenericName[km]=ល្បែង​តក្ក​ដូច Sokoban
-GenericName[ko]=소코반 같은 전략 게임
-GenericName[lt]=Sokoban tipo loginis žaidimas
-GenericName[lv]=Sokoban līdzīga loģiskā spēle
-GenericName[mk]=Логичка игра слична на Сокобан
-GenericName[nb]=Sokoban-lignende logikkspill
-GenericName[nds]=Sokoban-liek Logikspeel
-GenericName[ne]=सोकोबान जस्तै तार्किक खेल
-GenericName[nl]=Sokoban-achtig logisch spel
-GenericName[nn]=Sokoban-liknande logikkspel
-GenericName[pl]=Gra logiczna typu Sokoban
-GenericName[pt]=Jogo de Lógica tipo Sokoban
-GenericName[pt_BR]=Jogo Lógico parecido com Sokoban
-GenericName[ro]=Un joc de logică ca Sokoban
-GenericName[ru]=Составление молекул, клон Sokoban
-GenericName[se]=Sokoban-lágan logihkkaspeallu
-GenericName[sk]=Logická hra ako Sokoban
-GenericName[sl]=Logična igra podobna Sokobanu
-GenericName[sq]=Lojë logjike e ngjajshme me Sokoban
-GenericName[sr]=Логичка игра налик на Сокобан
-GenericName[sr@ijekavian]=Логичка игра налик на Сокобан
-GenericName[sr@ijekavianlatin]=Logička igra nalik na Sokoban
-GenericName[sr@latin]=Logička igra nalik na Sokoban
-GenericName[sv]=Sokoban-liknande logiskt spel
-GenericName[ta]=சோகோபான் போன்ற லாஜிக் விளையாட்டு
-GenericName[tr]=Sokoban-benzeri Mantık Oyunu
-GenericName[ug]=Sokoban غا ئوخشايدىغان لوگىكىلىق ئويۇن
-GenericName[uk]=Гра на логіку подібна до Сокобану
-GenericName[wa]=Djeu di lodjike rishonnant a sokoban
-GenericName[x-test]=xxSokoban-like Logic Gamexx
-GenericName[zh_CN]=类似推箱子的逻辑游戏
-GenericName[zh_TW]=倉庫番(sokoban)式的智力遊戲
-X-KDE-StartupNotify=true
-X-DBUS-StartupType=Multi
-Categories=Qt;KDE;Game;StrategyGame;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/katomic-14.12.3/levelset.cpp 
new/katomic-15.04.0/levelset.cpp
--- old/katomic-14.12.3/levelset.cpp    2014-12-30 09:53:39.000000000 +0100
+++ new/katomic-15.04.0/levelset.cpp    2015-04-06 00:56:33.000000000 +0200
@@ -22,13 +22,16 @@
  ********************************************************************/
 #include "levelset.h"
 
-#include <KStandardDirs>
+
 #include <KConfigGroup>
-#include <KDebug>
-#include <KLocale>
-#include <kdefakes.h>
+#include <QDebug>
+#include <KLocalizedString>
 #include <QFileInfo>
 
+#include <string.h>
+#include <QStandardPaths>
+#include <KSharedConfig>
+
 #include "atom.h"
 #include "molecule.h"
 #include "commondefs.h"
@@ -97,16 +100,17 @@
 
 bool LevelSet::load(const QString& levelSetName)
 {
-    QString file = KStandardDirs::locate("appdata", 
QString("levels/%1.dat").arg(levelSetName));
+    QString file = QStandardPaths::locate(QStandardPaths::DataLocation, 
QString("levels/%1.dat").arg(levelSetName));
     if (file.isEmpty())
     {
-        kDebug() << "level set \"" << levelSetName << "\" data file not found. 
Check your installation";
+        qDebug() << "level set \"" << levelSetName << "\" data file not found. 
Check your installation";
         return false;
     }
 
     bool res = loadFromFile(file);
-    if (!res)
-        kDebug() << "warning: failed to load level set" << levelSetName;
+    if (!res) {
+        qDebug() << "warning: failed to load level set" << levelSetName;
+    }
 
     return res;
 }
@@ -126,8 +130,9 @@
 
     m_name = QFileInfo(fileName).baseName();
 
-    if (m_levelCount <= 0)
-        kDebug() << "warning: in level set" << m_name << "level count not 
specified or invalid";
+    if (m_levelCount <= 0) {
+        //qDebug() << "warning: in level set" << m_name << "level count not 
specified or invalid";
+    }
 
     return true;
 }
@@ -184,7 +189,7 @@
         {
             if (line.isEmpty())
             {
-                kDebug() << "error while reading level" << levelNum << "data 
from" << m_name;
+                //qDebug() << "error while reading level" << levelNum << "data 
from" << m_name;
                 return 0;
             }
 
@@ -237,8 +242,9 @@
         current.obj = value.at(0).toLatin1();
         value = value.mid(2);
 
-        strlcpy(current.conn, value.toAscii(), sizeof(current.conn));
-        kWarning( mol->m_atoms.indexOf(current) != -1 )
+        strncpy(current.conn, value.toAscii(), sizeof(current.conn));
+        if (mol->m_atoms.indexOf(current) != -1)
+             qWarning()
             << "OOOPS, duplicate atom definition in" << key;
         mol->m_atoms.append(current);
         atom_index++;
@@ -282,10 +288,10 @@
 
 bool LevelSet::isDefaultLevelsAvailable()
 {
-    QString file = KStandardDirs::locate("appdata", 
QString("levels/%1.dat").arg(DEFAULT_LEVELSET_NAME));
+    QString file = QStandardPaths::locate(QStandardPaths::DataLocation, 
QString("levels/%1.dat").arg(DEFAULT_LEVELSET_NAME));
     if (file.isEmpty())
     {
-        kDebug() << "default level set \"" << DEFAULT_LEVELSET_NAME << "\" 
data file not found. Check your installation";
+        //qDebug() << "default level set \"" << DEFAULT_LEVELSET_NAME << "\" 
data file not found. Check your installation";
         return false;
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/katomic-14.12.3/levelsetdelegate.cpp 
new/katomic-15.04.0/levelsetdelegate.cpp
--- old/katomic-14.12.3/levelsetdelegate.cpp    2014-12-30 09:53:39.000000000 
+0100
+++ new/katomic-15.04.0/levelsetdelegate.cpp    2015-04-06 00:56:33.000000000 
+0200
@@ -25,8 +25,8 @@
 #include <QPainter>
 #include <QApplication>
 
-#include <KGlobalSettings>
-#include <KLocale>
+#include <KLocalizedString>
+#include <QFontDatabase>
 
 #include "commondefs.h"
 
@@ -91,7 +91,7 @@
         r = r.adjusted(innerSpacing, fm.lineSpacing(), -marginH*2, 0);
         flags = Qt::AlignLeft | Qt::AlignTop;
 
-        p->setFont(KGlobalSettings::smallestReadableFont());
+        
p->setFont(QFontDatabase::systemFont(QFontDatabase::SmallestReadableFont));
 
         QString text = i18n("by %1", authorName);
         QString authorEmail = 
index.data(KAtomic::LevelSetAuthorEmailRole).toString();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/katomic-14.12.3/levelsetwidget.ui 
new/katomic-15.04.0/levelsetwidget.ui
--- old/katomic-14.12.3/levelsetwidget.ui       2014-12-30 09:53:39.000000000 
+0100
+++ new/katomic-15.04.0/levelsetwidget.ui       2015-04-06 00:56:33.000000000 
+0200
@@ -22,7 +22,7 @@
     </widget>
    </item>
    <item>
-    <widget class="KListWidget" name="m_lwLevelSets"/>
+    <widget class="QListWidget" name="m_lwLevelSets"/>
    </item>
    <item>
     <layout class="QHBoxLayout" name="horizontalLayout">
@@ -68,14 +68,9 @@
  </widget>
  <customwidgets>
   <customwidget>
-   <class>KListWidget</class>
-   <extends>QListWidget</extends>
-   <header>klistwidget.h</header>
-  </customwidget>
-  <customwidget>
    <class>KNS3::Button</class>
    <extends>QPushButton</extends>
-   <header location="global">KNS3/KNewStuffButton</header>
+   <header location="global">KNS3/Button</header>
   </customwidget>
  </customwidgets>
  <resources/>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/katomic-14.12.3/main.cpp new/katomic-15.04.0/main.cpp
--- old/katomic-14.12.3/main.cpp        2014-12-30 09:53:39.000000000 +0100
+++ new/katomic-15.04.0/main.cpp        2015-04-06 00:56:33.000000000 +0200
@@ -21,21 +21,23 @@
 
 #include "toplevel.h"
 
-#include <kapplication.h>
-#include <klocale.h>
-#include <kcmdlineargs.h>
-#include <kaboutdata.h>
-#include <kglobal.h>
+#include <qapplication.h>
+#include <KLocalizedString>
+
+#include <KAboutData>
 #include <kmessagebox.h>
 #include <qtimer.h>
-
+#include <QCommandLineParser>
+#include <QCommandLineOption>
+#include <kdelibs4configmigrator.h>
+#include <KDBusService>
 #include "levelset.h"
 
 
 static const char description[] =
        I18N_NOOP("KDE Atomic Entertainment Game");
 
-static const char version[] = "3.0";
+static const char version[] = "4.0";
 
 // ##########################
 // #   Main                #
@@ -43,48 +45,58 @@
 
 int main(int argc, char **argv)
 {
-  KAboutData aboutData( "katomic", 0, ki18n("KAtomic"),
-    version, ki18n(description), KAboutData::License_GPL,
-    ki18n("(c) 1998, Andreas Wuest\n(c) 2007-2009 Dmitry Suzdalev"), 
KLocalizedString(), "http://games.kde.org/katomic"; );
-  aboutData.addAuthor(ki18n("Andreas Wuest"), ki18n("Original author"), 
"andreaswu...@gmx.de");
-  aboutData.addAuthor(ki18n("Dmitry Suzdalev"), ki18n("Porting to KDE4. 
Current maintainer"), "dim...@gmail.com");
-  aboutData.addAuthor(ki18n("Stephan Kulow"), KLocalizedString(), 
"co...@kde.org");
-  aboutData.addAuthor(ki18n("Cristian Tibirna"), KLocalizedString(), 
"tibi...@kde.org");
-  aboutData.addCredit(ki18n("Carsten Pfeiffer"), KLocalizedString(), 
"pfeif...@kde.org");
-  aboutData.addCredit(ki18n("Dave Corrie"), KLocalizedString(), 
"k...@davecorrie.com");
-  aboutData.addCredit(ki18n("Kai Jung"), ki18n("6 new levels"), 
"j...@fh-fresenius.de");
-  aboutData.addCredit(ki18n("Danny Allen"), ki18n("Game graphics and 
application icon"), "da...@dannyallen.co.uk");
-  aboutData.addCredit(ki18n("Johann Ollivier Lapeyre"), ki18n("New great SVG 
artwork for KDE4"), "johann.ollivierlape...@gmail.com");
-  aboutData.addCredit(ki18n("Brian Croom"), ki18n("Port to use 
KGameRenderer"), "brian.s.cr...@gmail.com");
-
-  KCmdLineArgs::init( argc, argv, &aboutData );
-
-  KCmdLineOptions options;
-  options.add("hackmode", ki18n( "Enable access to all levels" ));
-  KCmdLineArgs::addCmdLineOptions( options );
 
-  KApplication a;
-  KGlobal::locale()->insertCatalog( QLatin1String( "libkdegames" ));
+    Kdelibs4ConfigMigrator migrate(QStringLiteral("katomic"));
+    migrate.setConfigFiles(QStringList() << QStringLiteral("katomicrc"));
+    migrate.setUiFiles(QStringList() << QStringLiteral("katomicui.rc"));
+    migrate.migrate();
+    QApplication app(argc, argv);
+
+  KAboutData aboutData( "katomic", i18n("KAtomic"),
+    version, i18n(description), KAboutLicense::GPL,
+    i18n("(c) 1998, Andreas Wuest\n(c) 2007-2009 Dmitry Suzdalev"), 
"http://games.kde.org/katomic"; );
+  aboutData.addAuthor(i18n("Andreas Wuest"), i18n("Original author"), 
"andreaswu...@gmx.de");
+  aboutData.addAuthor(i18n("Dmitry Suzdalev"), i18n("Porting to KDE4. Current 
maintainer"), "dim...@gmail.com");
+  aboutData.addAuthor(i18n("Stephan Kulow"), QString(), "co...@kde.org");
+  aboutData.addAuthor(i18n("Cristian Tibirna"), QString(), "tibi...@kde.org");
+  aboutData.addCredit(i18n("Carsten Pfeiffer"), QString(), "pfeif...@kde.org");
+  aboutData.addCredit(i18n("Dave Corrie"), QString(), "k...@davecorrie.com");
+  aboutData.addCredit(i18n("Kai Jung"), i18n("6 new levels"), 
"j...@fh-fresenius.de");
+  aboutData.addCredit(i18n("Danny Allen"), i18n("Game graphics and application 
icon"), "da...@dannyallen.co.uk");
+  aboutData.addCredit(i18n("Johann Ollivier Lapeyre"), i18n("New great SVG 
artwork for KDE4"), "johann.ollivierlape...@gmail.com");
+  aboutData.addCredit(i18n("Brian Croom"), i18n("Port to use KGameRenderer"), 
"brian.s.cr...@gmail.com");
+
+    QCommandLineParser parser;
+    KAboutData::setApplicationData(aboutData);
+    parser.addVersionOption();
+    parser.addHelpOption();
+  parser.addOption(QCommandLineOption(QStringList() <<  
QLatin1String("hackmode"), i18n( "Enable access to all levels" )));
+
+    aboutData.setupCommandLine(&parser);
+    parser.process(app);
+    aboutData.processCommandLine(&parser);
+
+    app.setWindowIcon(QIcon::fromTheme(QLatin1String("katomic")));
 
+  KDBusService service;
   if (!LevelSet::isDefaultLevelsAvailable())
   {
       KMessageBox::error(0, i18n("KAtomic failed to find its default level set 
and will quit. Please check your installation."));
-      QTimer::singleShot(0, &a, SLOT(quit()));
+      QTimer::singleShot(0, &app, SLOT(quit()));
   }
   else
   {
-      if ( a.isSessionRestored() )
+      if ( app.isSessionRestored() )
           RESTORE(AtomTopLevel)
       else {
           AtomTopLevel *top = new AtomTopLevel;
-          KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
-          if ( args->isSet( "hackmode" ) )
+          if ( parser.isSet( "hackmode" ) )
               top->enableHackMode();
-          args->clear();
+          
           top->show();
       }
   }
 
-  return a.exec();
+  return app.exec();
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/katomic-14.12.3/org.kde.katomic.desktop 
new/katomic-15.04.0/org.kde.katomic.desktop
--- old/katomic-14.12.3/org.kde.katomic.desktop 1970-01-01 01:00:00.000000000 
+0100
+++ new/katomic-15.04.0/org.kde.katomic.desktop 2015-04-06 00:56:33.000000000 
+0200
@@ -0,0 +1,141 @@
+[Desktop Entry]
+Name=KAtomic
+Name[af]=Katomic
+Name[ast]=KAtomic
+Name[be]=KAtomic
+Name[bn]=কে-অ্যাটমিক
+Name[br]=KAtomic
+Name[bs]=KAtomic
+Name[ca]=KAtomic
+Name[ca@valencia]=KAtomic
+Name[cs]=KAtomic
+Name[cy]=KAtomic
+Name[da]=KAtomic
+Name[de]=KAtomic
+Name[el]=KAtomic
+Name[en_GB]=KAtomic
+Name[eo]=KAtomic
+Name[es]=KAtomic
+Name[et]=KAtomic
+Name[eu]=KAtomic
+Name[fa]=اتمی
+Name[fi]=KAtomic
+Name[fr]=KAtomic
+Name[ga]=KAtomic
+Name[gl]=KAtomic
+Name[he]=KAtomic
+Name[hne]=के-एटामिक
+Name[hr]=KAtomic
+Name[hu]=KAtomic
+Name[is]=KAtomic
+Name[it]=KAtomic
+Name[ja]=KAtomic
+Name[kk]=KAtomic
+Name[km]=KAtomic
+Name[ko]=KAtomic
+Name[lt]=KAtomic
+Name[lv]=KAtomic
+Name[mk]=KAtomic
+Name[mr]=के-एटॉमिक
+Name[nb]=KAtomic
+Name[nds]=KAtomic
+Name[ne]=केडीई एटोमिक
+Name[nl]=KAtomic
+Name[nn]=KAtomic
+Name[pa]=ਕੇ-ਪਰਮਾਣੂ
+Name[pl]=Atomy
+Name[pt]=KAtomic
+Name[pt_BR]=KAtomic
+Name[ro]=KAtomic
+Name[ru]=KAtomic
+Name[se]=KAtomic
+Name[sk]=KAtomic
+Name[sl]=KAtomic
+Name[sq]=KAtomic
+Name[sr]=К‑атомика
+Name[sr@ijekavian]=К‑атомика
+Name[sr@ijekavianlatin]=K‑atomika
+Name[sr@latin]=K‑atomika
+Name[sv]=Katom
+Name[ta]=கேஅடாமிக்
+Name[te]=కెఎటామిక్
+Name[tg]=KАтомҳо
+Name[tr]=KAtomic
+Name[ug]=KAtomic
+Name[uk]=Веселі атоми
+Name[vi]=KAtomic
+Name[wa]=KAtomic
+Name[xh]=KAtomic
+Name[x-test]=xxKAtomicxx
+Name[zh_CN]=KAtomic
+Name[zh_TW]=KAtomic 原子
+Icon=katomic
+Type=Application
+Exec=katomic -qwindowtitle %c
+X-DocPath=katomic/index.html
+GenericName=Sokoban-like Logic Game
+GenericName[ast]=Xuegu de lóxica asemeyáu al Sokoban
+GenericName[be]=Лагічная гульня тыпу Sokoban
+GenericName[bn]=সোকোবান-এর মত যুক্তির খেলা
+GenericName[bs]=Logička igra poput Sokoban-a
+GenericName[ca]=Joc de lògica similar al Sokoban
+GenericName[ca@valencia]=Joc de lògica similar al Sokoban
+GenericName[cs]=Logická hra jako Sokoban
+GenericName[cy]=Gêm Resymeg sy'n debyg i Sokoban
+GenericName[da]=Sokoban-lignende logisk spil
+GenericName[de]=„Sokoban“-Spiel
+GenericName[el]=Παιχνίδι λογικής παρόμοιο με το Sokoban
+GenericName[en_GB]=Sokoban-like Logic Game
+GenericName[eo]=Logikludo simila al Sokoban
+GenericName[es]=Juego de lógica similar al Sokoban
+GenericName[et]=Sokobani moodi loogikamäng
+GenericName[eu]=Sokoban-en antzeko joko logikoa
+GenericName[fa]=بازی منطق شبیه Sokoban
+GenericName[fi]=Sokoban-tyylinen logiikkapeli
+GenericName[fr]=Jeu de logique dans le style de Sokoban
+GenericName[ga]=Cluiche Loighce Cosúil le Sokoban
+GenericName[gl]=Xogo de lóxica ao estilo do Sokoban
+GenericName[he]=חיקוי Sokoban, משחק לוגי
+GenericName[hne]=सोकोबान जइसन तर्क वाले खेल
+GenericName[hr]=Logička igra poput Sokobana
+GenericName[hu]=Sokoban-szerű logikai játék
+GenericName[is]=Leikur sem líkist Sokoban
+GenericName[it]=Gioco di logica simile a Sokoban
+GenericName[ja]=倉庫番のような論理ゲーム
+GenericName[kk]=Сокобан-секілді логикалық ойын
+GenericName[km]=ល្បែង​តក្ក​ដូច Sokoban
+GenericName[ko]=소코반 같은 전략 게임
+GenericName[lt]=Sokoban tipo loginis žaidimas
+GenericName[lv]=Sokoban līdzīga loģiskā spēle
+GenericName[mk]=Логичка игра слична на Сокобан
+GenericName[nb]=Sokoban-lignende logikkspill
+GenericName[nds]=Sokoban-liek Logikspeel
+GenericName[ne]=सोकोबान जस्तै तार्किक खेल
+GenericName[nl]=Sokoban-achtig logisch spel
+GenericName[nn]=Sokoban-liknande logikkspel
+GenericName[pl]=Gra logiczna typu Sokoban
+GenericName[pt]=Jogo de Lógica tipo Sokoban
+GenericName[pt_BR]=Jogo Lógico parecido com Sokoban
+GenericName[ro]=Un joc de logică ca Sokoban
+GenericName[ru]=Составление молекул, клон Sokoban
+GenericName[se]=Sokoban-lágan logihkkaspeallu
+GenericName[sk]=Logická hra ako Sokoban
+GenericName[sl]=Logična igra podobna Sokobanu
+GenericName[sq]=Lojë logjike e ngjajshme me Sokoban
+GenericName[sr]=Логичка игра налик на Сокобан
+GenericName[sr@ijekavian]=Логичка игра налик на Сокобан
+GenericName[sr@ijekavianlatin]=Logička igra nalik na Sokoban
+GenericName[sr@latin]=Logička igra nalik na Sokoban
+GenericName[sv]=Sokoban-liknande logiskt spel
+GenericName[ta]=சோகோபான் போன்ற லாஜிக் விளையாட்டு
+GenericName[tr]=Sokoban-benzeri Mantık Oyunu
+GenericName[ug]=Sokoban غا ئوخشايدىغان لوگىكىلىق ئويۇن
+GenericName[uk]=Гра на логіку подібна до Сокобану
+GenericName[wa]=Djeu di lodjike rishonnant a sokoban
+GenericName[x-test]=xxSokoban-like Logic Gamexx
+GenericName[zh_CN]=类似推箱子的逻辑游戏
+GenericName[zh_TW]=倉庫番(sokoban)式的智力遊戲
+StartupNotify=true
+X-DBUS-StartupType=Multi
+Categories=Qt;KDE;Game;StrategyGame;
+X-DBUS-ServiceName=org.kde.katomic
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/katomic-14.12.3/playfield.cpp 
new/katomic-15.04.0/playfield.cpp
--- old/katomic-14.12.3/playfield.cpp   2014-12-30 09:53:39.000000000 +0100
+++ new/katomic-15.04.0/playfield.cpp   2015-04-06 00:56:33.000000000 +0200
@@ -28,13 +28,14 @@
 #include <QTimeLine>
 #include <QPainter>
 
-#include <KStandardDirs>
+
 #include <KConfig>
-#include <KDebug>
+#include <QDebug>
 #include <kconfiggroup.h>
 
 #include <KGamePopupItem>
 #include <KgTheme>
+#include <QStandardPaths>
 
 #include "molecule.h"
 #include "fielditem.h"
@@ -46,7 +47,7 @@
 {
        Theme() : KgTheme("pics/default_theme.desktop")
        {
-               setGraphicsPath(KStandardDirs::locate("appdata", 
"pics/default_theme.svgz"));
+               
setGraphicsPath(QStandardPaths::locate(QStandardPaths::DataLocation, 
"pics/default_theme.svgz"));
        }
 };
 
@@ -56,7 +57,7 @@
     m_levelFinished(false)
 {
     m_atomTimeLine = new QTimeLine(300, this);
-    connect(m_atomTimeLine, SIGNAL(frameChanged(int)), 
SLOT(atomAnimFrameChanged(int)) );
+    connect(m_atomTimeLine, &QTimeLine::frameChanged, this, 
&PlayField::atomAnimFrameChanged);
 
     m_upArrow = new ArrowFieldItem(&m_renderer, Up, this);
     m_downArrow = new ArrowFieldItem(&m_renderer, Down, this);
@@ -86,7 +87,7 @@
 {
     if (!level)
     {
-        kDebug() << "level data is null!";
+        //qDebug() << "level data is null!";
         return;
     }
 
@@ -124,7 +125,7 @@
 {
     if (!m_levelData || !m_levelData->molecule())
     {
-        kDebug() << "level or molecule data is null!";
+        //qDebug() << "level or molecule data is null!";
         return;
     }
 
@@ -160,7 +161,7 @@
 
 void PlayField::resize( int width, int height)
 {
-    kDebug() << "resize:" << width << "," << height;
+    //qDebug() << "resize:" << width << "," << height;
     setSceneRect( 0, 0, width, height );
 
     // we take 1/4 of width for displaying preview
@@ -177,7 +178,7 @@
     // if atom animation is running we need to rescale timeline
     if( isAnimating() )
     {
-        kDebug() << "restarting animation";
+        //qDebug() << "restarting animation";
         int curTime = m_atomTimeLine->currentTime();
         // calculate numCells to move using oldSize
         int numCells = m_atomTimeLine->endFrame()/oldSize;
@@ -573,7 +574,7 @@
 {
     if (!m_levelData || !m_levelData->molecule())
     {
-        kDebug() << "level or molecule data is null!";
+        //qDebug() << "level or molecule data is null!";
         return false;
     }
     // let's assume that molecule is done
@@ -608,7 +609,7 @@
 {
     if (!m_levelData)
     {
-        kDebug() << "level data is null!";
+        //qDebug() << "level data is null!";
         return true;
     }
 
@@ -676,7 +677,7 @@
 {
     if (!m_levelData)
     {
-        kDebug() << "level data is null!";
+        //qDebug() << "level data is null!";
         return;
     }
 
@@ -767,11 +768,11 @@
 {
     if (!m_levelData || !m_levelData->molecule())
     {
-        kDebug() << "level or molecule data is null!";
+        //qDebug() << "level or molecule data is null!";
         return QString();
     }
 
     return m_levelData->molecule()->moleculeName();
 }
 
-#include "playfield.moc"
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/katomic-14.12.3/toplevel.cpp 
new/katomic-15.04.0/toplevel.cpp
--- old/katomic-14.12.3/toplevel.cpp    2014-12-30 09:53:39.000000000 +0100
+++ new/katomic-15.04.0/toplevel.cpp    2015-04-06 00:56:33.000000000 +0200
@@ -23,16 +23,16 @@
 #include "toplevel.h"
 
 
-#include <klocale.h>
+#include <KLocalizedString>
 #include <kconfig.h>
-#include <kstandarddirs.h>
 #include <kstandardaction.h>
 #include <kstandardgameaction.h>
 #include <kselectaction.h>
 #include <kactioncollection.h>
-#include <kdebug.h>
-#include <kicon.h>
-#include <kstatusbar.h>
+#include <QDebug>
+#include <QIcon>
+#include <qstatusbar.h>
+#include <QLabel>
 
 #include "gamewidget.h"
 #include "playfield.h"
@@ -40,10 +40,6 @@
 #include "commondefs.h"
 #include "chooselevelsetdialog.h"
 
-static const int LEVEL_BAR_ID = 0;
-static const int CUR_SCORE_BAR_ID = 1;
-static const int HIGHSCORE_BAR_ID = 2;
-static const int MOLECULE_NAME_ID = 3;
 
 AtomTopLevel::AtomTopLevel()
 {
@@ -57,16 +53,19 @@
     loadSettings();
     setCentralWidget(m_gameWid);
 
-    statusBar()->insertItem( i18n("Level:"), LEVEL_BAR_ID , 1);
-    statusBar()->insertPermanentItem( i18n("Current score:"), 
CUR_SCORE_BAR_ID, 1);
-    statusBar()->insertPermanentItem( i18n("Highscore:"), HIGHSCORE_BAR_ID, 1 
);
-    statusBar()->insertItem( QString(), MOLECULE_NAME_ID , 1);
-    statusBar()->setItemAlignment(0, Qt::AlignLeft | Qt::AlignVCenter);
+    mLevel = new QLabel(i18n("Level:"));
+    mCurrentScore = new QLabel(i18n("Current score:"));
+    mHighScore = new QLabel(i18n("Highscore:"));
+    mMoleculeName = new QLabel;
+    statusBar()->addWidget(mLevel);
+    statusBar()->addPermanentWidget(mCurrentScore);
+    statusBar()->addPermanentWidget(mHighScore);
+    statusBar()->addWidget(mMoleculeName);
 
     updateStatusBar( m_gameWid->currentLevel(), m_gameWid->currentScore(), 
m_gameWid->currentHighScore() );
 
-    connect(m_gameWid, SIGNAL(statsChanged(int,int,int)), 
SLOT(updateStatusBar(int,int,int)));
-    connect(m_gameWid, SIGNAL(levelChanged(int)), SLOT(levelHasChanged(int)));
+    connect(m_gameWid, &GameWidget::statsChanged, this, 
&AtomTopLevel::updateStatusBar);
+    connect(m_gameWid, &GameWidget::levelChanged, this, 
&AtomTopLevel::levelHasChanged);
 
     // update next/prev actions
     levelHasChanged(m_gameWid->currentLevel());
@@ -81,7 +80,7 @@
 {
     // saves last played level and levelset
     m_gameWid->saveLastPlayedLevel();
-    Preferences::self()->writeConfig();
+    Preferences::self()->save();
     return true;
 }
 
@@ -102,38 +101,38 @@
 
 
     m_prevLevelAct = actionCollection()->addAction( QLatin1String(  
"prev_level" ) );
-    m_prevLevelAct->setIcon( KIcon( QLatin1String(  "arrow-left" ) ) );
+    m_prevLevelAct->setIcon( QIcon::fromTheme( QLatin1String(  "arrow-left" ) 
) );
     m_prevLevelAct->setText( i18n( "Previous Level" ) );
-    m_prevLevelAct->setShortcut( Qt::CTRL + Qt::Key_P );
+    actionCollection()->setDefaultShortcut(m_prevLevelAct, Qt::CTRL + 
Qt::Key_P );
     addAction( m_prevLevelAct );
     connect( m_prevLevelAct, SIGNAL(triggered(bool)), m_gameWid, 
SLOT(prevLevel()) );
 
     m_nextLevelAct = actionCollection()->addAction( QLatin1String(  
"next_level" ) );
-    m_nextLevelAct->setIcon( KIcon( QLatin1String(  "arrow-right" ) ) );
+    m_nextLevelAct->setIcon( QIcon::fromTheme( QLatin1String(  "arrow-right" ) 
) );
     m_nextLevelAct->setText( i18n( "Next Level" ) );
-    m_nextLevelAct->setShortcut( Qt::CTRL + Qt::Key_N );
+    actionCollection()->setDefaultShortcut(m_nextLevelAct, Qt::CTRL + 
Qt::Key_N );
     addAction( m_nextLevelAct );
     connect( m_nextLevelAct, SIGNAL(triggered(bool)), m_gameWid, 
SLOT(nextLevel()) );
 
     QAction* chooseLevelSet = actionCollection()->addAction( QLatin1String(  
"choose_level_set" ) );
     chooseLevelSet->setText( i18n( "Choose level set..." ) );
     addAction( chooseLevelSet );
-    connect( chooseLevelSet, SIGNAL(triggered(bool)), SLOT(chooseLevelSet()) );
+    connect(chooseLevelSet, &QAction::triggered, this, 
&AtomTopLevel::chooseLevelSet);
 
     m_animSpeedAct = new KSelectAction(i18n("Animation Speed"), this);
     actionCollection()->addAction( QLatin1String( "anim_speed" ), 
m_animSpeedAct);
     QStringList acts;
     acts << i18n("Slow") << i18n("Normal") << i18n("Fast");
     m_animSpeedAct->setItems(acts);
-    connect( m_animSpeedAct, SIGNAL(triggered(int)), 
SLOT(slotAnimSpeedChanged(int)) );
+    connect(m_animSpeedAct, static_cast<void 
(KSelectAction::*)(int)>(&KSelectAction::triggered), this, 
&AtomTopLevel::slotAnimSpeedChanged);
 
     QAction *undoAll = actionCollection()->addAction( QLatin1String(  
"move_undo_all" ) );
-    undoAll->setIcon( KIcon( QLatin1String( "media-skip-backward" )) );
+    undoAll->setIcon( QIcon::fromTheme( QLatin1String( "media-skip-backward" 
)) );
     undoAll->setText( i18n("Undo All") );
     connect( undoAll, SIGNAL(triggered(bool)), m_gameWid->playfield(), 
SLOT(undoAll()) );
 
     QAction *redoAll = actionCollection()->addAction( QLatin1String(  
"move_redo_all" ) );
-    redoAll->setIcon( KIcon( QLatin1String( "media-skip-forward" )) );
+    redoAll->setIcon( QIcon::fromTheme( QLatin1String( "media-skip-forward" )) 
);
     redoAll->setText( i18n("Redo All") );
     connect( redoAll, SIGNAL(triggered(bool)), m_gameWid->playfield(), 
SLOT(redoAll()) );
 
@@ -147,39 +146,39 @@
     connect (m_gameWid->playfield(), SIGNAL (enableUndo(bool)), undoAll, 
SLOT(setEnabled(bool)));
     connect (m_gameWid->playfield(), SIGNAL (enableRedo(bool)), redoAll, 
SLOT(setEnabled(bool)));
 
-    KAction* atomUpAct = actionCollection()->addAction( QLatin1String( 
"atom_up" ));
+    QAction * atomUpAct = actionCollection()->addAction( QLatin1String( 
"atom_up" ));
     atomUpAct->setText(i18n("Atom Up"));
-    atomUpAct->setShortcut(Qt::Key_Up);
+    actionCollection()->setDefaultShortcut(atomUpAct, Qt::Key_Up);
     addAction(atomUpAct);
-    connect(atomUpAct, SIGNAL(triggered(bool)), m_gameWid, SLOT(moveUp()));
+    connect(atomUpAct, &QAction::triggered, m_gameWid, &GameWidget::moveUp);
 
-    KAction* atomDownAct = actionCollection()->addAction( QLatin1String( 
"atom_down" ));
+    QAction * atomDownAct = actionCollection()->addAction( QLatin1String( 
"atom_down" ));
     atomDownAct->setText(i18n("Atom Down"));
-    atomDownAct->setShortcut(Qt::Key_Down);
+    actionCollection()->setDefaultShortcut(atomDownAct,Qt::Key_Down);
     addAction(atomDownAct);
-    connect(atomDownAct, SIGNAL(triggered(bool)), m_gameWid, SLOT(moveDown()));
+    connect(atomDownAct, &QAction::triggered, m_gameWid, 
&GameWidget::moveDown);
 
-    KAction* atomLeftAct = actionCollection()->addAction( QLatin1String( 
"atom_left" ));
+    QAction * atomLeftAct = actionCollection()->addAction( QLatin1String( 
"atom_left" ));
     atomLeftAct->setText(i18n("Atom Left"));
-    atomLeftAct->setShortcut(Qt::Key_Left);
+    actionCollection()->setDefaultShortcut(atomLeftAct,Qt::Key_Left);
     addAction(atomLeftAct);
-    connect(atomLeftAct, SIGNAL(triggered(bool)), m_gameWid, SLOT(moveLeft()));
+    connect(atomLeftAct, &QAction::triggered, m_gameWid, 
&GameWidget::moveLeft);
 
-    KAction* atomRightAct = actionCollection()->addAction( QLatin1String( 
"atom_right" ));
+    QAction * atomRightAct = actionCollection()->addAction( QLatin1String( 
"atom_right" ));
     atomRightAct->setText(i18n("Atom Right"));
-    atomRightAct->setShortcut(Qt::Key_Right);
+    actionCollection()->setDefaultShortcut(atomRightAct,Qt::Key_Right);
     addAction(atomRightAct);
-    connect(atomRightAct, SIGNAL(triggered(bool)), m_gameWid, 
SLOT(moveRight()));
+    connect(atomRightAct, &QAction::triggered, m_gameWid, 
&GameWidget::moveRight);
 
-    KAction* nextAtomAct = actionCollection()->addAction( QLatin1String( 
"next_atom" ));
+    QAction * nextAtomAct = actionCollection()->addAction( QLatin1String( 
"next_atom" ));
     nextAtomAct->setText(i18n("Next Atom"));
-    nextAtomAct->setShortcut(Qt::Key_Tab);
+    actionCollection()->setDefaultShortcut(nextAtomAct,Qt::Key_Tab);
     addAction(nextAtomAct);
     connect(nextAtomAct, SIGNAL(triggered(bool)), m_gameWid->playfield(), 
SLOT(nextAtom()));
 
-    KAction* prevAtomAct = actionCollection()->addAction( QLatin1String( 
"prev_atom" ));
+    QAction * prevAtomAct = actionCollection()->addAction( QLatin1String( 
"prev_atom" ));
     prevAtomAct->setText(i18n("Previous Atom"));
-    prevAtomAct->setShortcut(Qt::SHIFT+Qt::Key_Tab);
+    actionCollection()->setDefaultShortcut(prevAtomAct,Qt::SHIFT+Qt::Key_Tab);
     addAction(prevAtomAct);
     connect(prevAtomAct, SIGNAL(triggered(bool)), m_gameWid->playfield(), 
SLOT(previousAtom()));
 }
@@ -194,24 +193,24 @@
 {
     m_gameWid->playfield()->setAnimationSpeed(speed);
     Preferences::setAnimationSpeed(speed);
-    Preferences::self()->writeConfig();
+    Preferences::self()->save();
 }
 
 void AtomTopLevel::updateStatusBar( int level, int score, int highscore )
 {
-    statusBar()->changeItem( i18n("Level: %1 (%2)", level, 
m_gameWid->levelSet().visibleName()), LEVEL_BAR_ID );
-    statusBar()->changeItem( i18n("Current score: %1", score), 
CUR_SCORE_BAR_ID );
+    mLevel->setText(i18n("Level: %1 (%2)", level, 
m_gameWid->levelSet().visibleName()));
+    mCurrentScore->setText(i18n("Current score: %1", score));
     QString str;
     if(highscore == 0)
         str = '-';
     else
         str.setNum(highscore);
-    statusBar()->changeItem( i18n("Highscore: %1", str), HIGHSCORE_BAR_ID );
+    mHighScore->setText(i18n("Highscore: %1", str));
 }
 
 void AtomTopLevel::enableHackMode()
 {
-    kDebug() << "Enabling hack mode";
+    //qDebug() << "Enabling hack mode";
     m_prevLevelAct->setDisabled(false);
     m_nextLevelAct->setDisabled(false);
     m_gameWid->enableSwitchToAnyLevel();
@@ -220,7 +219,7 @@
 void AtomTopLevel::levelHasChanged(int level)
 {
     // Update level name
-    statusBar()->changeItem( m_gameWid->currentMolecule(), MOLECULE_NAME_ID);
+    mMoleculeName->setText(m_gameWid->currentMolecule());
     // don't gray out actions in hackmode, else do
     if(!m_gameWid->switchToAnyLevelAllowed())
         updateActionsForLevel(level);
@@ -236,7 +235,7 @@
 {
     // will delete itself on close
     ChooseLevelSetDialog* dlg = new ChooseLevelSetDialog(this);
-    connect(dlg, SIGNAL(levelSetChanged(QString)), 
SLOT(changeLevelSet(QString)));
+    connect(dlg, &ChooseLevelSetDialog::levelSetChanged, this, 
&AtomTopLevel::changeLevelSet);
 
     dlg->setCurrentLevelSet(m_gameWid->levelSet().name());
     dlg->show();
@@ -248,4 +247,4 @@
         m_gameWid->setLevelSet(levelSet);
 }
 
-#include "toplevel.moc"
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/katomic-14.12.3/toplevel.h 
new/katomic-15.04.0/toplevel.h
--- old/katomic-14.12.3/toplevel.h      2014-12-30 09:53:39.000000000 +0100
+++ new/katomic-15.04.0/toplevel.h      2015-04-06 00:56:33.000000000 +0200
@@ -24,8 +24,7 @@
 class GameWidget;
 class KSelectAction;
 class QAction;
-class KAction;
-
+class QLabel;
 #include <kxmlguiwindow.h>
 
 /**
@@ -73,8 +72,12 @@
     GameWidget *m_gameWid;
 
     QAction *m_redoAct, *m_undoAct;
-    KAction *m_prevLevelAct, *m_nextLevelAct;
+    QAction *m_prevLevelAct, *m_nextLevelAct;
     KSelectAction* m_animSpeedAct;
+    QLabel *mLevel;
+    QLabel *mCurrentScore;
+    QLabel *mHighScore;
+    QLabel *mMoleculeName;
 };
 
 #endif


Reply via email to