[ksudoku] /: Add .arcconfig file to point arcanist to the KDE Phabricator instance.

Johan Ouwerkerk null at kde.org
Sat Apr 22 21:37:06 UTC 2017


Git commit ed7b05fad015a89c7297b7305b090ed456ec1d18 by Johan Ouwerkerk.
Committed on 22/04/2017 at 21:36.
Pushed by ouwerkerk into branch 'master'.

Add .arcconfig file to point arcanist to the KDE Phabricator instance.

Summary:
Arcanist is the commandline tooling (client) for Phabricator.
Phabricator is to replace the KDE reviewboard and become the new central hub in KDE workflow.

The .arcconfig points arcanist to the KDE Phabricator instance.
Additionally, to play it safe the config forbids arcanist from silently rewriting git history.

Reviewers: #kde_games, ltoscano

Reviewed By: ltoscano

Subscribers: ltoscano, #kde_games

Differential Revision: https://phabricator.kde.org/D5545

A  +3    -0    .arcconfig
A  +3    -0    .gitignore
M  +49   -21   CMakeLists.txt
M  +2    -205  INSTALL
M  +1    -1    doc/CMakeLists.txt
M  +1    -1    doc/index.docbook
R  +-    --    src/128-apps-ksudoku.png [from: src/hi128-app-ksudoku.png - 100% similarity]
R  +-    --    src/16-apps-ksudoku.png [from: src/hi16-app-ksudoku.png - 100% similarity]
R  +-    --    src/32-apps-ksudoku.png [from: src/hi32-app-ksudoku.png - 100% similarity]
M  +28   -19   src/CMakeLists.txt
M  +1    -1    src/generator/state.cpp
M  +8    -8    src/generator/sudokuboard.cpp
M  +12   -11   src/gui/CMakeLists.txt
M  +2    -2    src/gui/config.cpp
M  +5    -5    src/gui/gamevariants.cpp
M  +52   -49   src/gui/ksudoku.cpp
M  +1    -1    src/gui/ksudoku.h
M  +5    -2    src/gui/ksudoku_client.cpp
M  +3    -3    src/gui/ksudokugame.cpp
M  +1    -0    src/gui/org.kde.ksudoku.desktop
M  +1    -1    src/gui/puzzleprinter.cpp
M  +4    -4    src/gui/serializer.cpp
M  +1    -1    src/gui/views/ArcBall.h
M  +37   -38   src/gui/views/gameactions.cpp
M  +2    -2    src/gui/views/gameactions.h
M  +1    -1    src/gui/views/ksview.cpp
M  +15   -17   src/gui/views/renderer.cpp
M  +3    -2    src/gui/views/renderer.h
M  +2    -2    src/gui/views/roxdokuview.cpp
M  +1    -1    src/gui/views/valuelistwidget.cpp
M  +1    -1    src/gui/views/view2d.cpp
M  +9    -8    src/gui/welcomescreen.cpp
M  +2    -2    src/logic/CMakeLists.txt
M  +2    -3    src/logic/puzzle.cpp
M  +48   -34   src/main.cpp
R  +-    --    src/shapes/128-actions-ksudoku-jigsaw.png [from: src/shapes/hi128-action-ksudoku-jigsaw.png - 100% similarity]
R  +-    --    src/shapes/128-actions-ksudoku-ksudoku_16x16.png [from: src/shapes/hi128-action-ksudoku-ksudoku_16x16.png - 100% similarity]
R  +-    --    src/shapes/128-actions-ksudoku-ksudoku_25x25.png [from: src/shapes/hi128-action-ksudoku-ksudoku_25x25.png - 100% similarity]
R  +-    --    src/shapes/128-actions-ksudoku-ksudoku_4x4.png [from: src/shapes/hi128-action-ksudoku-ksudoku_4x4.png - 100% similarity]
R  +-    --    src/shapes/128-actions-ksudoku-ksudoku_9x9.png [from: src/shapes/hi128-action-ksudoku-ksudoku_9x9.png - 100% similarity]
R  +-    --    src/shapes/128-actions-ksudoku-roxdoku_3x3x3.png [from: src/shapes/hi128-action-ksudoku-roxdoku_3x3x3.png - 100% similarity]
R  +-    --    src/shapes/128-actions-ksudoku-roxdoku_4x4x4.png [from: src/shapes/hi128-action-ksudoku-roxdoku_4x4x4.png - 100% similarity]
R  +-    --    src/shapes/128-actions-ksudoku-roxdoku_5x5x5.png [from: src/shapes/hi128-action-ksudoku-roxdoku_5x5x5.png - 100% similarity]
R  +-    --    src/shapes/128-actions-ksudoku-samurai.png [from: src/shapes/hi128-action-ksudoku-samurai.png - 100% similarity]
R  +-    --    src/shapes/128-actions-ksudoku-tiny_samurai.png [from: src/shapes/hi128-action-ksudoku-tiny_samurai.png - 100% similarity]
R  +-    --    src/shapes/128-actions-ksudoku-xsudoku.png [from: src/shapes/hi128-action-ksudoku-xsudoku.png - 100% similarity]
R  +-    --    src/shapes/128-actions-ksudoku.png [from: src/shapes/hi128-action-ksudoku.png - 100% similarity]
R  +-    --    src/shapes/16-actions-ksudoku-jigsaw.png [from: src/shapes/hi16-action-ksudoku-jigsaw.png - 100% similarity]
R  +-    --    src/shapes/16-actions-ksudoku-ksudoku_16x16.png [from: src/shapes/hi16-action-ksudoku-ksudoku_16x16.png - 100% similarity]
R  +-    --    src/shapes/16-actions-ksudoku-ksudoku_25x25.png [from: src/shapes/hi16-action-ksudoku-ksudoku_25x25.png - 100% similarity]
R  +-    --    src/shapes/16-actions-ksudoku-ksudoku_4x4.png [from: src/shapes/hi16-action-ksudoku-ksudoku_4x4.png - 100% similarity]
R  +-    --    src/shapes/16-actions-ksudoku-ksudoku_9x9.png [from: src/shapes/hi16-action-ksudoku-ksudoku_9x9.png - 100% similarity]
R  +-    --    src/shapes/16-actions-ksudoku-roxdoku_3x3x3.png [from: src/shapes/hi16-action-ksudoku-roxdoku_3x3x3.png - 100% similarity]
R  +-    --    src/shapes/16-actions-ksudoku-roxdoku_4x4x4.png [from: src/shapes/hi16-action-ksudoku-roxdoku_4x4x4.png - 100% similarity]
R  +-    --    src/shapes/16-actions-ksudoku-roxdoku_5x5x5.png [from: src/shapes/hi16-action-ksudoku-roxdoku_5x5x5.png - 100% similarity]
R  +-    --    src/shapes/16-actions-ksudoku-samurai.png [from: src/shapes/hi16-action-ksudoku-samurai.png - 100% similarity]
R  +-    --    src/shapes/16-actions-ksudoku-tiny_samurai.png [from: src/shapes/hi16-action-ksudoku-tiny_samurai.png - 100% similarity]
R  +-    --    src/shapes/16-actions-ksudoku-xsudoku.png [from: src/shapes/hi16-action-ksudoku-xsudoku.png - 100% similarity]
R  +-    --    src/shapes/16-actions-ksudoku.png [from: src/shapes/hi16-action-ksudoku.png - 100% similarity]
R  +-    --    src/shapes/22-actions-ksudoku-jigsaw.png [from: src/shapes/hi22-action-ksudoku-jigsaw.png - 100% similarity]
R  +-    --    src/shapes/22-actions-ksudoku-ksudoku_16x16.png [from: src/shapes/hi22-action-ksudoku-ksudoku_16x16.png - 100% similarity]
R  +-    --    src/shapes/22-actions-ksudoku-ksudoku_25x25.png [from: src/shapes/hi22-action-ksudoku-ksudoku_25x25.png - 100% similarity]
R  +-    --    src/shapes/22-actions-ksudoku-ksudoku_4x4.png [from: src/shapes/hi22-action-ksudoku-ksudoku_4x4.png - 100% similarity]
R  +-    --    src/shapes/22-actions-ksudoku-ksudoku_9x9.png [from: src/shapes/hi22-action-ksudoku-ksudoku_9x9.png - 100% similarity]
R  +-    --    src/shapes/22-actions-ksudoku-roxdoku_3x3x3.png [from: src/shapes/hi22-action-ksudoku-roxdoku_3x3x3.png - 100% similarity]
R  +-    --    src/shapes/22-actions-ksudoku-roxdoku_4x4x4.png [from: src/shapes/hi22-action-ksudoku-roxdoku_4x4x4.png - 100% similarity]
R  +-    --    src/shapes/22-actions-ksudoku-roxdoku_5x5x5.png [from: src/shapes/hi22-action-ksudoku-roxdoku_5x5x5.png - 100% similarity]
R  +-    --    src/shapes/22-actions-ksudoku-samurai.png [from: src/shapes/hi22-action-ksudoku-samurai.png - 100% similarity]
R  +-    --    src/shapes/22-actions-ksudoku-tiny_samurai.png [from: src/shapes/hi22-action-ksudoku-tiny_samurai.png - 100% similarity]
R  +-    --    src/shapes/22-actions-ksudoku-xsudoku.png [from: src/shapes/hi22-action-ksudoku-xsudoku.png - 100% similarity]
R  +-    --    src/shapes/22-actions-ksudoku.png [from: src/shapes/hi22-action-ksudoku.png - 100% similarity]
R  +-    --    src/shapes/32-actions-ksudoku-jigsaw.png [from: src/shapes/hi32-action-ksudoku-jigsaw.png - 100% similarity]
R  +-    --    src/shapes/32-actions-ksudoku-ksudoku_16x16.png [from: src/shapes/hi32-action-ksudoku-ksudoku_16x16.png - 100% similarity]
R  +-    --    src/shapes/32-actions-ksudoku-ksudoku_25x25.png [from: src/shapes/hi32-action-ksudoku-ksudoku_25x25.png - 100% similarity]
R  +-    --    src/shapes/32-actions-ksudoku-ksudoku_4x4.png [from: src/shapes/hi32-action-ksudoku-ksudoku_4x4.png - 100% similarity]
R  +-    --    src/shapes/32-actions-ksudoku-ksudoku_9x9.png [from: src/shapes/hi32-action-ksudoku-ksudoku_9x9.png - 100% similarity]
R  +-    --    src/shapes/32-actions-ksudoku-roxdoku_3x3x3.png [from: src/shapes/hi32-action-ksudoku-roxdoku_3x3x3.png - 100% similarity]
R  +-    --    src/shapes/32-actions-ksudoku-roxdoku_4x4x4.png [from: src/shapes/hi32-action-ksudoku-roxdoku_4x4x4.png - 100% similarity]
R  +-    --    src/shapes/32-actions-ksudoku-roxdoku_5x5x5.png [from: src/shapes/hi32-action-ksudoku-roxdoku_5x5x5.png - 100% similarity]
R  +-    --    src/shapes/32-actions-ksudoku-samurai.png [from: src/shapes/hi32-action-ksudoku-samurai.png - 100% similarity]
R  +-    --    src/shapes/32-actions-ksudoku-tiny_samurai.png [from: src/shapes/hi32-action-ksudoku-tiny_samurai.png - 100% similarity]
R  +-    --    src/shapes/32-actions-ksudoku-xsudoku.png [from: src/shapes/hi32-action-ksudoku-xsudoku.png - 100% similarity]
R  +-    --    src/shapes/32-actions-ksudoku.png [from: src/shapes/hi32-action-ksudoku.png - 100% similarity]
R  +-    --    src/shapes/48-actions-ksudoku-jigsaw.png [from: src/shapes/hi48-action-ksudoku-jigsaw.png - 100% similarity]
R  +-    --    src/shapes/48-actions-ksudoku-ksudoku_16x16.png [from: src/shapes/hi48-action-ksudoku-ksudoku_16x16.png - 100% similarity]
R  +-    --    src/shapes/48-actions-ksudoku-ksudoku_25x25.png [from: src/shapes/hi48-action-ksudoku-ksudoku_25x25.png - 100% similarity]
R  +-    --    src/shapes/48-actions-ksudoku-ksudoku_4x4.png [from: src/shapes/hi48-action-ksudoku-ksudoku_4x4.png - 100% similarity]
R  +-    --    src/shapes/48-actions-ksudoku-ksudoku_9x9.png [from: src/shapes/hi48-action-ksudoku-ksudoku_9x9.png - 100% similarity]
R  +-    --    src/shapes/48-actions-ksudoku-roxdoku_3x3x3.png [from: src/shapes/hi48-action-ksudoku-roxdoku_3x3x3.png - 100% similarity]
R  +-    --    src/shapes/48-actions-ksudoku-roxdoku_4x4x4.png [from: src/shapes/hi48-action-ksudoku-roxdoku_4x4x4.png - 100% similarity]
R  +-    --    src/shapes/48-actions-ksudoku-roxdoku_5x5x5.png [from: src/shapes/hi48-action-ksudoku-roxdoku_5x5x5.png - 100% similarity]
R  +-    --    src/shapes/48-actions-ksudoku-samurai.png [from: src/shapes/hi48-action-ksudoku-samurai.png - 100% similarity]
R  +-    --    src/shapes/48-actions-ksudoku-tiny_samurai.png [from: src/shapes/hi48-action-ksudoku-tiny_samurai.png - 100% similarity]
R  +-    --    src/shapes/48-actions-ksudoku-xsudoku.png [from: src/shapes/hi48-action-ksudoku-xsudoku.png - 100% similarity]
R  +-    --    src/shapes/48-actions-ksudoku.png [from: src/shapes/hi48-action-ksudoku.png - 100% similarity]
R  +-    --    src/shapes/64-actions-ksudoku-jigsaw.png [from: src/shapes/hi64-action-ksudoku-jigsaw.png - 100% similarity]
R  +-    --    src/shapes/64-actions-ksudoku-ksudoku_16x16.png [from: src/shapes/hi64-action-ksudoku-ksudoku_16x16.png - 100% similarity]
R  +-    --    src/shapes/64-actions-ksudoku-ksudoku_25x25.png [from: src/shapes/hi64-action-ksudoku-ksudoku_25x25.png - 100% similarity]
R  +-    --    src/shapes/64-actions-ksudoku-ksudoku_4x4.png [from: src/shapes/hi64-action-ksudoku-ksudoku_4x4.png - 100% similarity]
R  +-    --    src/shapes/64-actions-ksudoku-ksudoku_9x9.png [from: src/shapes/hi64-action-ksudoku-ksudoku_9x9.png - 100% similarity]
R  +-    --    src/shapes/64-actions-ksudoku-roxdoku_3x3x3.png [from: src/shapes/hi64-action-ksudoku-roxdoku_3x3x3.png - 100% similarity]
R  +-    --    src/shapes/64-actions-ksudoku-roxdoku_4x4x4.png [from: src/shapes/hi64-action-ksudoku-roxdoku_4x4x4.png - 100% similarity]
R  +-    --    src/shapes/64-actions-ksudoku-roxdoku_5x5x5.png [from: src/shapes/hi64-action-ksudoku-roxdoku_5x5x5.png - 100% similarity]
R  +-    --    src/shapes/64-actions-ksudoku-samurai.png [from: src/shapes/hi64-action-ksudoku-samurai.png - 100% similarity]
R  +-    --    src/shapes/64-actions-ksudoku-tiny_samurai.png [from: src/shapes/hi64-action-ksudoku-tiny_samurai.png - 100% similarity]
R  +-    --    src/shapes/64-actions-ksudoku-xsudoku.png [from: src/shapes/hi64-action-ksudoku-xsudoku.png - 100% similarity]
R  +-    --    src/shapes/64-actions-ksudoku.png [from: src/shapes/hi64-action-ksudoku.png - 100% similarity]
M  +77   -2    src/shapes/CMakeLists.txt
M  +1    -1    src/themes/CMakeLists.txt

https://commits.kde.org/ksudoku/ed7b05fad015a89c7297b7305b090ed456ec1d18

diff --git a/.arcconfig b/.arcconfig
new file mode 100644
index 0000000..e327192
--- /dev/null
+++ b/.arcconfig
@@ -0,0 +1,3 @@
+{
+  "phabricator.uri": "https://phabricator.kde.org/"
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..5ce68b9
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+.kdev4/
+build/
+*.kdev4
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b7e6281..b191de7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,24 +1,48 @@
 project(ksudoku)
 
-if(NOT COMPILING_KDEGAMES)
-	find_package(KDE4 REQUIRED)
-	include(KDE4Defaults)
-	include(MacroLibrary)
-	find_package(KDEGames 4.9.0 REQUIRED)
-
-	macro_optional_find_package(OpenGL)
-	macro_log_feature(OPENGL_FOUND "OpenGL" "API for developing portable, interactive 2D and 3Dgraphics applications" "http://mesa3d.sourceforge.net" FALSE "" "Kubrick will not be built and KSudoku will not have Roxdoku support without OpenGL.")
-	macro_log_feature(QT_QTOPENGL_FOUND "QtOpenGL" "Qt module that make it easy to use OpenGL in Qt apps" "http://doc.trolltech.com/latest/qtopengl.html" FALSE "" "Kubrick will not be built and KSudoku will not have Roxdoku support without QtOpenGL.")
-	macro_display_feature_log()
-
-	if(OPENGL_FOUND AND QT_QTOPENGL_FOUND)
-		set(OPENGL_SUPPORT true)
-	endif(OPENGL_FOUND AND QT_QTOPENGL_FOUND)
-
-	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")
+set (KF5_MIN_VERSION "5.15.0")
+
+find_package(ECM 1.7.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 Qml Quick QuickWidgets Svg Test OpenGL)
+find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS
+    Config
+    ConfigWidgets
+    CoreAddons
+    Crash
+    DBusAddons
+    GuiAddons
+    I18n
+    ItemModels
+    KDELibs4Support
+    KIO
+    NewStuff
+    NotifyConfig
+    TextWidgets
+    WidgetsAddons
+    WindowSystem
+    XmlGui
+)
+
+find_package(KF5KDEGames 4.9.0 REQUIRED)
+
+find_package(OpenGL)
+set_package_properties(OpenGL PROPERTIES DESCRIPTION "API for developing portable, interactive 2D and 3Dgraphics applications" TYPE REQUIRED PURPOSE "Kubrick will not be built and KSudoku will not have Roxdoku support without OpenGL.")
+
+include(FeatureSummary)
+include(ECMAddAppIcon)
+include(ECMInstallIcons)
+include(KDEInstallDirs)
+include(KDECompilerSettings NO_POLICY_SCOPE)
+include(KDECMakeSettings)
+
+if (OPENGL_FOUND)
+     set(OPENGL_SUPPORT true)
+endif()
+
 
 ##options
 #OPTION(DEBUG
@@ -38,8 +62,12 @@ if(OPENGL_SUPPORT)
 	add_definitions(-DOPENGL_SUPPORT)
 endif(OPENGL_SUPPORT)
 
-add_subdirectory( src )
-add_subdirectory( doc )
+add_definitions(-DQT_NO_URL_CAST_FROM_STRING)
+
+add_subdirectory(src)
+add_subdirectory(doc)
 
 #message(STATUS "ksudoku: DEBUG: ${DEBUG}")
 #message(STATUS "ksudoku: install prefix: ${CMAKE_INSTALL_PREFIX}")
+
+feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)
diff --git a/INSTALL b/INSTALL
index 5fc54e6..87e2820 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,206 +1,3 @@
-Basic Installation
-==================
-
-REQUIREMENTS :
-	- open gl library (also header files)  - mesa3d.org
-	- glu library (also header files) - mesa3d.org
-	- kde headers and libs
-
-
-FAST INSTALLATION
-as root:
-./fastinstall.sh
-INSTALLATION
-
-
-1. Open a shell in project directory (the one where this file is located)
-2. Ectract project tar -xvvzf ksudoku-0.3.tar.gz
-2. Run "./configure --prefix=`kdeconfig --prefix`"
-   (will install the program in /usr/local/kde, if you want to install
-   in /usr run "./configure --prefix=/usr")
-3. Run "make"
-4. Run "make install" as root.
-5. Run "ksudoku" (if does not start check point 2)
-
-
-** Building and installing **
-
-* Build the makefiles with "cmake ."
-  (or better: create a directory (say build), and run in 
-  that dir "cmake ..")
-* to change settings run "make edit_cache" (optional)
-* run "make"
-* run "make install"
-
-* To clean, use "make clean"
-
-For more make targets run "make help"
-
-##==##
-
-
-
-   These are generic installation instructions.
-
-   The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation.  It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions.  Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, a file
-`config.cache' that saves the results of its tests to speed up
-reconfiguring, and a file `config.log' containing compiler output
-(useful mainly for debugging `configure').
-
-   If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
-be considered for the next release.  If at some point `config.cache'
-contains results you don't want to keep, you may remove or edit it.
-
-   The file `configure.in' is used to create `configure' by a program
-called `autoconf'.  You only need `configure.in' if you want to change
-it or regenerate `configure' using a newer version of `autoconf'.
-
-The simplest way to compile this package is:
-
-  1. `cd' to the directory containing the package's source code and type
-     `./configure' to configure the package for your system.  If you're
-     using `csh' on an old version of System V, you might need to type
-     `sh ./configure' instead to prevent `csh' from trying to execute
-     `configure' itself.
-
-     Running `configure' takes a while.  While running, it prints some
-     messages telling which features it is checking for.
-
-  2. Type `make' to compile the package.
-
-  3. Type `make install' to install the programs and any data files and
-     documentation.
-
-  4. You can remove the program binaries and object files from the
-     source code directory by typing `make clean'.  
-
-Compilers and Options
-=====================
-
-   Some systems require unusual options for compilation or linking that
-the `configure' script does not know about.  You can give `configure'
-initial values for variables by setting them in the environment.  Using
-a Bourne-compatible shell, you can do that on the command line like
-this:
-     CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
-
-Or on systems that have the `env' program, you can do it like this:
-     env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
-
-Compiling For Multiple Architectures
-====================================
-
-   You can compile the package for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory.  To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'.  `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script.  `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
-
-   If you have to use a `make' that does not supports the `VPATH'
-variable, you have to compile the package for one architecture at a time
-in the source code directory.  After you have installed the package for
-one architecture, use `make distclean' before reconfiguring for another
-architecture.
-
-Installation Names
-==================
-
-   By default, `make install' will install the package's files in
-`/usr/local/bin', `/usr/local/man', etc.  You can specify an
-installation prefix other than `/usr/local' by giving `configure' the
-option `--prefix=PATH'.
-
-   You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files.  If you
-give `configure' the option `--exec-prefix=PATH', the package will use
-PATH as the prefix for installing programs and libraries.
-Documentation and other data files will still use the regular prefix.
-
-   If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-
-Optional Features
-=================
-
-   Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System).  The
-`README' should mention any `--enable-' and `--with-' options that the
-package recognizes.
-
-   For packages that use the X Window System, `configure' can usually
-find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
-
-Specifying the System Type
-==========================
-
-   There may be some features `configure' can not figure out
-automatically, but needs to determine by the type of host the package
-will run on.  Usually `configure' can figure that out, but if it prints
-a message saying it can not guess the host type, give it the
-`--host=TYPE' option.  TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name with three fields:
-     CPU-COMPANY-SYSTEM
-
-See the file `config.sub' for the possible values of each field.  If
-`config.sub' isn't included in this package, then this package doesn't
-need to know the host type.
-
-   If you are building compiler tools for cross-compiling, you can also
-use the `--target=TYPE' option to select the type of system they will
-produce code for and the `--build=TYPE' option to select the type of
-system on which you are compiling the package.
-
-Sharing Defaults
-================
-
-   If you want to set default values for `configure' scripts to share,
-you can create a site shell script called `config.site' that gives
-default values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists.  Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
-
-Operation Controls
-==================
-
-   `configure' recognizes the following options to control how it
-operates.
-
-`--cache-file=FILE'
-     Use and save the results of the tests in FILE instead of
-     `./config.cache'.  Set FILE to `/dev/null' to disable caching, for
-     debugging `configure'.
-
-`--help'
-     Print a summary of the options to `configure', and exit.
-
-`--quiet'
-`--silent'
-`-q'
-     Do not print messages saying which checks are being made.
-
-`--srcdir=DIR'
-     Look for the package's source code in directory DIR.  Usually
-     `configure' can determine that directory automatically.
-
-`--version'
-     Print the version of Autoconf used to generate the `configure'
-     script, and exit.
-
-`configure' also accepts some other, not widely useful, options.
+Build instructions can be found at 
+http://techbase.kde.org/Getting_Started/Build/KDE4
 
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
index a473e15..4e80b2f 100644
--- a/doc/CMakeLists.txt
+++ b/doc/CMakeLists.txt
@@ -1,2 +1,2 @@
-kde4_create_handbook(index.docbook INSTALL_DESTINATION ${HTML_INSTALL_DIR}/en SUBDIR ksudoku)
+kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${KDE_INSTALL_DOCBUNDLEDIR}/en SUBDIR ksudoku)
 
diff --git a/doc/index.docbook b/doc/index.docbook
index 679f130..8f39b47 100644
--- a/doc/index.docbook
+++ b/doc/index.docbook
@@ -1,5 +1,5 @@
 <?xml version="1.0" ?>
-<!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 ksudoku "KSudoku">
 <!ENTITY kappname "&ksudoku;">
   <!ENTITY package "kdegames">  <!-- do not change this! -->
diff --git a/src/hi128-app-ksudoku.png b/src/128-apps-ksudoku.png
similarity index 100%
rename from src/hi128-app-ksudoku.png
rename to src/128-apps-ksudoku.png
diff --git a/src/hi16-app-ksudoku.png b/src/16-apps-ksudoku.png
similarity index 100%
rename from src/hi16-app-ksudoku.png
rename to src/16-apps-ksudoku.png
diff --git a/src/hi32-app-ksudoku.png b/src/32-apps-ksudoku.png
similarity index 100%
rename from src/hi32-app-ksudoku.png
rename to src/32-apps-ksudoku.png
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 227aa82..4627e82 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -25,28 +25,32 @@ set(ksudoku_SRCS
 	generator/mathdokugenerator.cpp
 )
 
-kde4_add_app_icon(ksudoku_SRCS "${KDE4_ICON_INSTALL_DIR}/oxygen/*/apps/ksudoku.png")
-kde4_add_executable(ksudoku ${ksudoku_SRCS})
+file(GLOB ICONS_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/*-apps-ksudoku.png")
+ecm_add_app_icon(ksudoku_SRCS ICONS ${ICONS_SRCS})
+add_executable(ksudoku ${ksudoku_SRCS})
 
 target_link_libraries(ksudoku
-	ksudoku_gui ksudoku_logic
-	kdegames kdegamesprivate
-	${KDE4_KIO_LIBS}
+    ksudoku_gui
+    ksudoku_logic
+    KF5KDEGames
+    KF5KDEGamesPrivate
+    KF5::KIOCore
+    KF5::Crash
 )
 
 if(OPENGL_SUPPORT)
 target_link_libraries(ksudoku
-	${QT_QTOPENGL_LIBRARY} ${OPENGL_LIBRARIES} ${CMAKE_DL_LIBS}
+	Qt5::OpenGL ${OPENGL_LIBRARIES} ${CMAKE_DL_LIBS}
 )
 endif(OPENGL_SUPPORT)
 
-install(TARGETS ksudoku  ${INSTALL_TARGETS_DEFAULT_ARGS} )
+install(TARGETS ksudoku  ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} )
 
 ########### next target ###############
-add_subdirectory( gui )
-add_subdirectory( logic  )
-add_subdirectory( shapes )
-add_subdirectory( themes )
+add_subdirectory(gui)
+add_subdirectory(logic)
+add_subdirectory(shapes)
+add_subdirectory(themes)
 
 
 #set(ksudoku_client_SRCS
@@ -61,15 +65,20 @@ add_subdirectory( themes )
 
 
 
-#install(TARGETS ksudoku_client  ${INSTALL_TARGETS_DEFAULT_ARGS} )
+#install(TARGETS ksudoku_client  ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} )
 
 ########### install files ###############
 
-install( PROGRAMS gui/org.kde.ksudoku.desktop  DESTINATION  ${XDG_APPS_INSTALL_DIR} )
-install( FILES gui/org.kde.ksudoku.appdata.xml DESTINATION ${SHARE_INSTALL_PREFIX}/metainfo )
-install( FILES gui/ksudokuui.rc  DESTINATION  ${DATA_INSTALL_DIR}/ksudoku )
-install( FILES ksudokurc  DESTINATION ${CONFIG_INSTALL_DIR})
-
-kde4_install_icons(${ICON_INSTALL_DIR})
-
+install(PROGRAMS gui/org.kde.ksudoku.desktop  DESTINATION  ${KDE_INSTALL_APPDIR})
+install(FILES gui/org.kde.ksudoku.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR})
+install(FILES gui/ksudokuui.rc  DESTINATION  ${KDE_INSTALL_KXMLGUI5DIR}/ksudoku)
+install(FILES ksudokurc  DESTINATION ${KDE_INSTALL_CONFDIR})
+
+ecm_install_icons(ICONS
+    128-apps-ksudoku.png
+    16-apps-ksudoku.png
+    32-apps-ksudoku.png
+    DESTINATION ${KDE_INSTALL_ICONDIR}
+    THEME hicolor
+)
 
diff --git a/src/generator/state.cpp b/src/generator/state.cpp
index 8e1fdce..f701444 100644
--- a/src/generator/state.cpp
+++ b/src/generator/state.cpp
@@ -35,4 +35,4 @@ State::State (QObject *             parent,
 {
 }
 
-#include "state.moc"
+
diff --git a/src/generator/sudokuboard.cpp b/src/generator/sudokuboard.cpp
index 09d958b..a26b003 100644
--- a/src/generator/sudokuboard.cpp
+++ b/src/generator/sudokuboard.cpp
@@ -24,7 +24,7 @@
 #include "mathdokugenerator.h"
 #include <QDebug> // IDW test.
 
-#include <KLocale>
+#include <KLocalizedString>
 #include <KMessageBox>
 
 #include <QMultiMap>
@@ -32,7 +32,7 @@
 #include <QTime>
 
 #include <stdio.h>
-#include <time.h>
+#include <ctime>
 
 SudokuBoard::SudokuBoard (SKGraph * graph)
     :
@@ -68,7 +68,7 @@ void SudokuBoard::setSeed()
     }
     else {
         started = true;
-        m_stats.seed = time(0);
+        m_stats.seed = std::time(nullptr);
         qsrand (m_stats.seed);
         dbo1 "setSeed(): SEED = %d\n", m_stats.seed);
     }
@@ -874,7 +874,7 @@ GuessesList SudokuBoard::deduceValues (BoardContents & boardValues,
 
                 guesses.clear();
                 for (int i = 0; i < original.count(); i++) {
-                    guesses.append (original.at (sequence.at (i))); 
+                    guesses.append (original.at (sequence.at (i)));
                 }
             }
             dbo2 "Guess    ");
@@ -909,7 +909,7 @@ void SudokuBoard::clear (BoardContents & boardValues)
 BoardContents & SudokuBoard::fillBoard()
 {
     // Solve the empty board, thus filling it with values at random.  These
-    // values can be the starting point for generating a puzzle and also the 
+    // values can be the starting point for generating a puzzle and also the
     // final solution of that puzzle.
 
     clear (m_currentValues);
@@ -1013,7 +1013,7 @@ void SudokuBoard::setUpValueRequirements (BoardContents & boardValues)
 	    int cell = cellList.at (n);
             m_validCellValues [cell] &= m_requiredGroupValues.at (group);
             index++;
-        }   
+        }
     }
     dbo2 "Finished setUpValueRequirements()\n");
 
@@ -1048,7 +1048,7 @@ void SudokuBoard::updateValueRequirements (BoardContents & boardValues, int cell
         for (int n = 0; n < m_order; n++) {
 	    int cell = cellList.at (n);
             m_validCellValues [cell] &= bitPattern;
-        }   
+        }
     }
 }
 
@@ -1134,4 +1134,4 @@ int SudokuBoard::getSymmetricIndices
     return result;
 }
 
-#include "sudokuboard.moc"
+
diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt
index c3ef8df..01a25f1 100644
--- a/src/gui/CMakeLists.txt
+++ b/src/gui/CMakeLists.txt
@@ -27,26 +27,27 @@ if(OPENGL_SUPPORT)
 endif(OPENGL_SUPPORT)
 
 
-kde4_add_ui_files(ksudoku_SRCS welcomescreen.ui configgame.ui)
+ki18n_wrap_ui(ksudoku_SRCS welcomescreen.ui configgame.ui)
 
-kde4_add_kcfg_files(ksudoku_SRCS settings.kcfgc )
+kconfig_add_kcfg_files(ksudoku_SRCS settings.kcfgc )
 
-kde4_add_library(ksudoku_gui STATIC ${ksudoku_SRCS} ${ksudoku_views_SRCS})
+add_library(ksudoku_gui STATIC ${ksudoku_SRCS} ${ksudoku_views_SRCS})
 
 target_link_libraries(ksudoku_gui 
 	ksudoku_logic
-    kdegames
-	${KDE4_KDEUI_LIBS} 
-	${KDE4_KDECORE_LIBS} 
-	${KDE4_KIO_LIBRARY}
-	${QT_QTCORE_LIBRARY} 
-	${QT_QTGUI_LIBRARY}
+    KF5KDEGames
+        KF5::Archive	 
+	KF5::KDELibs4Support 
+	KF5::KIOCore
+	Qt5::Core 
+	Qt5::Gui
+        Qt5::Svg
 	)
 
 if(OPENGL_SUPPORT)
 	target_link_libraries(ksudoku_gui 
 		${OPENGL_LIBRARIES}
-		${QT_QTOPENGL_LIBRARY})
+		Qt5::OpenGL)
 endif(OPENGL_SUPPORT)
 
 	
@@ -56,7 +57,7 @@ set(ksudoku_client_SRCS
     ksudoku_client.cpp
 )
 
-#kde4_add_executable(ksudoku_client ${ksudoku_client_SRCS})
+#add_executable(ksudoku_client ${ksudoku_client_SRCS})
 
 #target_link_libraries(ksudoku_client ${QT_AND_KDECORE_LIBRARIES} kdeui)
 
diff --git a/src/gui/config.cpp b/src/gui/config.cpp
index b499a18..9efa1c4 100644
--- a/src/gui/config.cpp
+++ b/src/gui/config.cpp
@@ -19,13 +19,13 @@
 
 #include "config.h"
 
-#include <KLocale>
+#include <KLocalizedString>
 #include <QListWidget>
 #include <QVBoxLayout>
 
 #include "symbols.h"
 
-#include "config.moc"
+
 
 namespace ksudoku {
 	
diff --git a/src/gui/gamevariants.cpp b/src/gui/gamevariants.cpp
index 129da1b..ac37612 100644
--- a/src/gui/gamevariants.cpp
+++ b/src/gui/gamevariants.cpp
@@ -24,12 +24,12 @@
 
 #include <QtDebug>
 #include <KMessageBox>
-#include <KLocale>
+#include <KLocalizedString>
 #include <QPainter>
-#include <KIconLoader>
+#include <QIcon>
 #include <QEvent>
 
-#include "gamevariants.moc"
+
 
 #include "puzzle.h"
 
@@ -183,13 +183,13 @@ void GameVariantDelegate::paint(QPainter* painter, const QStyleOptionViewItem& o
 
 	// Show icon
 
-	QPixmap iconPixmap = KIcon(icon(index), KIconLoader::global()).pixmap(m_iconWidth, m_iconHeight);
+	QPixmap iconPixmap = QIcon::fromTheme(icon(index)).pixmap(m_iconWidth, m_iconHeight);
 	painter->drawPixmap(contentRect.left(), (contentRect.height() - iconPixmap.height()) / 2 + contentRect.top(), iconPixmap);
 	contentRect.adjust(iconPixmap.width() + m_separatorPixels*2, 0, 0, 0);
 
 // 	// Show configuration icon
 // 	if(configurable(index)) {
-// 		QPixmap configPixmap = KIcon( QLatin1String( "configure" ), KIconLoader::global()).pixmap(32, 32);
+// 		QPixmap configPixmap = QIcon::fromTheme( QLatin1String( "configure" ) ).pixmap(32, 32);
 // 		painter->drawPixmap(contentRect.right() - configPixmap.width(), (contentRect.height() - configPixmap.height()) / 2 + contentRect.top(), configPixmap);
 // 		contentRect.adjust(0, 0, -(configPixmap.width() + separatorPixels), 0);
 // 	}
diff --git a/src/gui/ksudoku.cpp b/src/gui/ksudoku.cpp
index dbc88aa..4e13960 100644
--- a/src/gui/ksudoku.cpp
+++ b/src/gui/ksudoku.cpp
@@ -26,29 +26,29 @@
 
 #include <QDragEnterEvent>
 #include <QDropEvent>
-#include <ksavefile.h>
 
 #include <QHBoxLayout>
 #include <QLabel>
 #include <QComboBox>
 
-#include <KLocale>
+#include <QPrinter>
+#include <QPrintDialog>
+#include <QStandardPaths>
+
+#include <KLocalizedString>
 #include <KActionCollection>
 #include <KStandardAction>
-#include <KAction>
+#include <QAction>
 #include <KConfigDialog>
 
 #define USE_UNSTABLE_LIBKDEGAMESPRIVATE_API
 #include <libkdegamesprivate/kgamethemeselector.h>
-
-#include <KCmdLineArgs>
-#include <KAboutData>
-
+#include <QKeySequence>
+#include <KUrl>
 #include <kmessagebox.h>
-#include <klocale.h>
-#include <kstatusbar.h>
+#include <KLocalizedString>
+#include <qstatusbar.h>
 #include <kio/netaccess.h>
-#include <kfiledialog.h>
 #include <krun.h>
 
 #include "ksview.h"
@@ -62,9 +62,11 @@
 #include "puzzleprinter.h"
 
 #include <ktar.h>
-#include <kstandarddirs.h>
 #include <kio/job.h>
 #include <kstandardgameaction.h>
+#include <QDir>
+#include <KSharedConfig>
+#include <QFileDialog>
 
 #include "gamevariants.h"
 #include "welcomescreen.h"
@@ -149,16 +151,13 @@ KSudoku::KSudoku()
 
 	m_welcomeScreen = new WelcomeScreen(wrapper, m_gameVariants);
 	wrapper->layout()->addWidget(m_welcomeScreen);
-	connect(m_welcomeScreen, SIGNAL(newGameStarted(const ::ksudoku::Game&,GameVariant*)), this, SLOT(startGame(const ::ksudoku::Game&)));
+	connect(m_welcomeScreen, &ksudoku::WelcomeScreen::newGameStarted, this, &KSudoku::startGame);
 
 	setupStatusBar(m_welcomeScreen->difficulty(),
 		       m_welcomeScreen->symmetry());
 
 	showWelcomeScreen();
 
-	// Register the gamevariants resource
-	KGlobal::dirs()->addResourceType ("gamevariant", "data", KCmdLineArgs::aboutData()->appName());
-
 	updateShapesList();
 
 // 	QTimer *timer = new QTimer( this );
@@ -187,7 +186,17 @@ void KSudoku::updateShapesList()
 	variant->setIcon("ksudoku-roxdoku_3x3x3");
 #endif
 
-    QStringList filepaths = KGlobal::dirs()->findAllResources("gamevariant", "*.desktop", KStandardDirs::NoDuplicates); // Find files.
+	QStringList gamevariantdirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, "ksudoku", QStandardPaths::LocateDirectory);
+
+	QStringList filepaths;
+	Q_FOREACH (const QString& gamevariantdir, gamevariantdirs) {
+		const QStringList fileNames = QDir(gamevariantdir).entryList(QStringList() << QStringLiteral("*.desktop"));
+		Q_FOREACH (const QString &file, fileNames) {
+			if (!filepaths.contains(gamevariantdir + '/' + file)) {
+				filepaths.append(gamevariantdir + '/' + file);
+			}
+		}
+	}
 
 	QString variantName;
 	QString variantDescr;
@@ -238,8 +247,8 @@ void KSudoku::startGame(const Game& game) {
 	view->setValueListWidget(m_valueListWidget);
 	view->createView();
 
-	connect(view, SIGNAL(valueSelected(int)), m_valueListWidget, SLOT(selectValue(int)));
-	connect(m_valueListWidget, SIGNAL(valueSelected(int)), view, SLOT(selectValue(int)));
+	connect(view, &KsView::valueSelected, m_valueListWidget, &ksudoku::ValueListWidget::selectValue);
+	connect(m_valueListWidget, &ksudoku::ValueListWidget::valueSelected, view, &KsView::selectValue);
 // 	connect(view, SIGNAL(valueSelected(int)), SLOT(updateStatusBar()));
 
 	QWidget* widget = view->widget();
@@ -452,7 +461,7 @@ void KSudoku::setupActions()
 	m_gameActions = new ksudoku::GameActions(actionCollection());
 	m_gameActions->init();
 
-	KShortcut shortcut;
+	QKeySequence shortcut;
 
 	setAcceptDrops(true);
 
@@ -467,7 +476,7 @@ void KSudoku::setupActions()
 
 	KStandardAction::preferences(this, SLOT(optionsPreferences()), actionCollection());
 	// Settings: enable messages that the user marked "Do not show again".
-	KAction* enableMessagesAct = new KAction(i18n("Enable all messages"),0);
+	QAction* enableMessagesAct = new QAction(i18n("Enable all messages"),0);
 	actionCollection()->addAction("enable_messages", enableMessagesAct);
 	connect(enableMessagesAct, SIGNAL(triggered()), SLOT(enableMessages()));
 
@@ -475,28 +484,26 @@ void KSudoku::setupActions()
 	KStandardGameAction::undo(this, SLOT(undo()), actionCollection());
 	KStandardGameAction::redo(this, SLOT(redo()), actionCollection());
 
-	KAction * a = KStandardGameAction::hint(this, SLOT(giveHint()), actionCollection());
+	QAction * a = KStandardGameAction::hint(this, SLOT(giveHint()), actionCollection());
 	// The default value (H) conflicts with the keys assigned
 	// to add letter/numbers to the board.
-	shortcut = a->shortcut();
-	shortcut.setPrimary(QKeySequence(Qt::Key_F2));
-	a->setShortcut(shortcut);
+	actionCollection()->setDefaultShortcut(a, QKeySequence(Qt::Key_F2));
 
 	KStandardGameAction::solve(this, SLOT(autoSolve()), actionCollection());
 
-	a = new KAction(this);
+	a = new QAction(this);
 	actionCollection()->addAction( QLatin1String( "move_dub_puzzle" ), a);
 	a->setText(i18n("Check"));
-	a->setIcon(KIcon( QLatin1String( "games-endturn" )));
-	connect(a, SIGNAL(triggered(bool)), SLOT(dubPuzzle()));
+	a->setIcon(QIcon::fromTheme( QLatin1String( "games-endturn" )));
+	connect(a, &QAction::triggered, this, &KSudoku::dubPuzzle);
 	addAction(a);
 
 	//WEB
-	a = new KAction(this);
+	a = new QAction(this);
 	actionCollection()->addAction( QLatin1String( "home_page" ), a);
 	a->setText(i18n("Home Page"));
-	a->setIcon(KIcon( QLatin1String( "internet-web-browser" )));
-	connect(a, SIGNAL(triggered(bool)), SLOT(homepage()));
+	a->setIcon(QIcon::fromTheme( QLatin1String( "internet-web-browser" )));
+	connect(a, &QAction::triggered, this, &KSudoku::homepage);
 }
 
 void KSudoku::setupStatusBar (int difficulty, int symmetry)
@@ -533,8 +540,7 @@ void KSudoku::setupStatusBar (int difficulty, int symmetry)
 	// Set up a combo box for symmetry of puzzle layout.
 	statusBar()->addPermanentWidget (new QLabel (i18n("Symmetry")));
 	QComboBox * symmetryBox = new QComboBox (this);
-	QObject::connect(symmetryBox, SIGNAL(activated(int)),
-		    		this, SLOT(symmetryChanged(int)));
+	QObject::connect(symmetryBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), this, &KSudoku::symmetryChanged);
 	symmetryBox->setToolTip(i18nc(
 		"Symmetry of layout of clues when puzzle starts", "Symmetry"));
 	symmetryBox->setWhatsThis(i18n(
@@ -674,7 +680,7 @@ void KSudoku::gameOpen()
 	// the Open shortcut is pressed (usually CTRL+O) or the Open toolbar
 	// button is clicked
 	// standard filedialog
-	KUrl Url = KFileDialog::getOpenUrl(KUrl("kfiledialog:///ksudoku"), QString(), this, i18n("Open Location"));
+	KUrl Url = QFileDialog::getOpenFileUrl(this, i18n("Open Location"), QUrl::fromLocalFile(QDir::homePath()), QString());
 
 	if (!Url.isEmpty() && Url.isValid())
 	{
@@ -702,7 +708,7 @@ void KSudoku::gameSave()
 	Game game = currentGame();
 	if(!game.isValid()) return;
 
-	if(game.getUrl().isEmpty()) game.setUrl(KFileDialog::getSaveUrl(KUrl("kfiledialog:///ksudoku")));
+	if(game.getUrl().isEmpty()) game.setUrl(QFileDialog::getSaveFileUrl());
  	if (!game.getUrl().isEmpty() && game.getUrl().isValid())
 		ksudoku::Serializer::store(game, game.getUrl(), this);
 }
@@ -713,7 +719,7 @@ void KSudoku::gameSaveAs()
 	Game game = currentGame();
 	if(!game.isValid()) return;
 
-	game.setUrl(KFileDialog::getSaveUrl(KUrl("kfiledialog:///ksudoku")));
+	game.setUrl(QFileDialog::getSaveFileUrl());
     if (!game.getUrl().isEmpty() && game.getUrl().isValid())
     	gameSave();
 }
@@ -765,8 +771,8 @@ void KSudoku::optionsPreferences()
 	dialog->addPage(gameConfig, i18nc("Game Section in Config", "Game"), "games-config-options");
 	dialog->addPage(new KGameThemeSelector(dialog, Settings::self(), KGameThemeSelector::NewStuffDisableDownload), i18n("Theme"), "games-config-theme");
 
-    dialog->setHelp(QString(),"ksudoku");
-	connect(dialog, SIGNAL(settingsChanged(QString)), SLOT(updateSettings()));
+    //QT5 dialog->setHelp(QString(),"ksudoku");
+	connect(dialog, &KConfigDialog::settingsChanged, this, &KSudoku::updateSettings);
 	dialog->show();
 }
 
@@ -856,12 +862,11 @@ ksudoku::KsView* KSudoku::currentView() const{
 
 void KSudoku::loadCustomShapeFromPath()
 {
-	KUrl Url = KFileDialog::getOpenUrl( KUrl(), QString(), this, i18n("Open Location") );
+	QUrl Url = QFileDialog::getOpenFileUrl(this, i18n("Open Location"), QUrl(), QString());
 
 	if ( Url.isEmpty() || !Url.isValid() )
 	{
-		//TODO ERROR
-		return;
+		return; // user cancelled
 	}
 
 	QString tmpFile;
@@ -871,9 +876,8 @@ void KSudoku::loadCustomShapeFromPath()
 		return;
 	}
 
-	KStandardDirs myStdDir;
-	const QString destDir = myStdDir.saveLocation( "data", /*kapp->instanceName() + TODO PORT */"ksudoku/", true );
-	KStandardDirs::makeDir( destDir );
+	const QString destDir = QStandardPaths::writableLocation( QStandardPaths::GenericDataLocation ) + QStringLiteral("/ksudoku/");
+	QDir().mkpath( destDir );
 
 	KTar archive( tmpFile );
 
@@ -886,7 +890,7 @@ void KSudoku::loadCustomShapeFromPath()
 	else
 	{
 		//just copy
-		KIO::file_copy (Url, destDir);
+		KIO::file_copy (Url, QUrl::fromLocalFile(destDir + '/' + Url.fileName()));
 	}
 
 	KIO::NetAccess::removeTempFile(tmpFile);
@@ -900,7 +904,7 @@ void KSudoku::enableMessages()
 					i18n("Enable all messages"));
 	if (result == KMessageBox::Yes) {
 		KMessageBox::enableAllMessages();
-		KGlobal::config()->sync();	// Save the changes to disk.
+		KSharedConfig::openConfig()->sync();	// Save the changes to disk.
 	}
 }
 
@@ -918,9 +922,8 @@ bool KSudokuNewStuff::install( const QString &fileName )
 		return false;
 
 	const KArchiveDirectory *archiveDir = archive.directory();
-	KStandardDirs myStdDir;
-	const QString destDir = myStdDir.saveLocation("data", /*kapp->instanceName() + TODO PORT*/"ksudoku/", true);
-	KStandardDirs::makeDir(destDir);
+	const QString destDir = QStandardPaths::writableLocation( QStandardPaths::GenericDataLocation ) + QStringLiteral("/ksudoku/");
+	QDir().mkpath(destDir);
 
 	archiveDir->copyTo(destDir);
 	archive.close();
@@ -937,4 +940,4 @@ bool KSudokuNewStuff::createUploadFile( const QString &/*fileName*/ )
 
 
 
-#include "ksudoku.moc"
+
diff --git a/src/gui/ksudoku.h b/src/gui/ksudoku.h
index afc6eba..1d9e711 100644
--- a/src/gui/ksudoku.h
+++ b/src/gui/ksudoku.h
@@ -31,7 +31,7 @@
 
 #define USE_UNSTABLE_LIBKDEGAMESPRIVATE_API
 #include <libkdegamesprivate/kgamedifficulty.h>
-
+class QPrinter;
 class KUrl;
 
 namespace ksudoku {
diff --git a/src/gui/ksudoku_client.cpp b/src/gui/ksudoku_client.cpp
index 15f78e2..7cfe67d 100644
--- a/src/gui/ksudoku_client.cpp
+++ b/src/gui/ksudoku_client.cpp
@@ -18,14 +18,17 @@
  ***************************************************************************/
 
 
-#include <kapplication.h>
+
 #include <dcopclient.h>
 #include <qdatastream.h>
 #include <qstring.h>
+#include <QApplication>
+#include <KAboutData>
+#include <KLocalizedString>
 
 int main(int argc, char **argv)
 {
-    KApplication app(argc, argv, "ksudoku_client", false);
+    QApplication app(argc, argv);
 
     // get our DCOP client and attach so that we may use it
     DCOPClient *client = app.dcopClient();
diff --git a/src/gui/ksudokugame.cpp b/src/gui/ksudokugame.cpp
index e5b4b8d..b4192b4 100644
--- a/src/gui/ksudokugame.cpp
+++ b/src/gui/ksudokugame.cpp
@@ -29,7 +29,7 @@
 #include "globals.h"
 
 #include <KMessageBox>
-#include <KLocale>
+#include <KLocalizedString>
 
 #include <QList>
 
@@ -697,7 +697,7 @@ const BoardContents Game::allValues() const {
 
 QTime Game::time() const {
 	if(!m_private) return QTime();
-	return QTime().addMSecs(msecsElapsed());
+	return QTime(0,0).addMSecs(msecsElapsed());
 }
 
 int Game::msecsElapsed() const {
@@ -780,4 +780,4 @@ QWidget * Game::messageParent()
 
 }
 
-#include "ksudokugame.moc"
+
diff --git a/src/gui/org.kde.ksudoku.desktop b/src/gui/org.kde.ksudoku.desktop
index b92b874..ba856cd 100755
--- a/src/gui/org.kde.ksudoku.desktop
+++ b/src/gui/org.kde.ksudoku.desktop
@@ -125,3 +125,4 @@ Comment[uk]=KSudoku, гра у судоку і інше від KDE
 Comment[x-test]=xxKSudoku, Sudoku game & more by KDExx
 Terminal=false
 Categories=Qt;KDE;Game;LogicGame;
+X-DBUS-ServiceName=org.kde.ksudoku
diff --git a/src/gui/puzzleprinter.cpp b/src/gui/puzzleprinter.cpp
index 738db49..ed9f2b3 100644
--- a/src/gui/puzzleprinter.cpp
+++ b/src/gui/puzzleprinter.cpp
@@ -28,7 +28,7 @@
 #include <QPainter>
 #include <QLine>
 
-#include <KLocale>
+#include <KLocalizedString>
 
 #include "puzzle.h"
 #include "skgraph.h"
diff --git a/src/gui/serializer.cpp b/src/gui/serializer.cpp
index 6ca89ce..30763b9 100644
--- a/src/gui/serializer.cpp
+++ b/src/gui/serializer.cpp
@@ -29,11 +29,11 @@
 #include <QList>
 #include <QTextStream>
 #include <kurl.h>
-#include <ktemporaryfile.h>
+#include <QTemporaryFile>
 #include <kio/netaccess.h>
 #include <qfile.h>
-#include <klocale.h>
-#include <kstandarddirs.h>
+#include <KLocalizedString>
+
 
 #include "ksudoku.h"
 #include "symbols.h"
@@ -689,7 +689,7 @@ bool Serializer::store(const Game& game, const KUrl& url, QWidget* window) {
 
 	serializeGame(root, game);
 
-	KTemporaryFile file;
+	QTemporaryFile file;
 	file.open();
 
 	QTextStream stream(&file);
diff --git a/src/gui/views/ArcBall.h b/src/gui/views/ArcBall.h
index ebc4e11..95e231f 100644
--- a/src/gui/views/ArcBall.h
+++ b/src/gui/views/ArcBall.h
@@ -32,7 +32,7 @@
 #endif
 
 #include <QtGlobal>
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
 #include <OpenGL/gl.h>
 #include <OpenGL/glu.h>
 #elif defined(Q_WS_WIN)
diff --git a/src/gui/views/gameactions.cpp b/src/gui/views/gameactions.cpp
index 8b4ce62..52904b3 100644
--- a/src/gui/views/gameactions.cpp
+++ b/src/gui/views/gameactions.cpp
@@ -20,11 +20,11 @@
 
 #include "gameactions.h"
 
-#include <KLocale>
-#include <KAction>
+#include <KLocalizedString>
+#include <QAction>
 #include <KActionCollection>
 #include <QSignalMapper>
-
+#include <QKeySequence>
 namespace ksudoku {
 
 GameActions::GameActions(KActionCollection* collection) {
@@ -50,95 +50,94 @@ void GameActions::init() {
 	const Qt::Key extras[] = {Qt::Key_0, Qt::Key_Slash, Qt::Key_Minus,
                             /* Qt::Key_Asterisk, */ Qt::Key_Plus, Qt::Key_Space,
 			    Qt::Key_Return};
-	KAction* a;
-	KShortcut shortcut;
+	QAction * a;
+	QList<QKeySequence> shortcuts;
 	for(int i = 0; i < 31; ++i) {
-		a = new KAction(this);
+		shortcuts.clear();
+		a = new QAction(this);
 		m_collection->addAction(QString("val-select%1").arg(i+1,2,10,QChar('0')), a);
 		a->setText(i18n("Select %1 (%2)", QChar('a'+i), i+1));
 		m_selectValueMapper->setMapping(a, i+1);
 		connect(a, SIGNAL(triggered(bool)), m_selectValueMapper, SLOT(map()));
 		m_actions << a;
 
-		a = new KAction(this);
+		a = new QAction(this);
 		m_collection->addAction(QString("val-enter%1").arg(i+1,2,10,QChar('0')), a);
 		a->setText(i18n("Enter %1 (%2)", QChar('a'+i), i+1));
-		shortcut = a->shortcut();
-		if (i < 25) {;
-		    // Keys A to Y, for Sudoku puzzles.
-		    shortcut.setPrimary( Qt::Key_A + i);
+		if (i < 25) {
+			// Keys A to Y, for Sudoku puzzles.
+			shortcuts << QKeySequence(Qt::Key_A + i);
 		}
 		else {
-		    // Extras for keying in Mathdoku and Killer Sudoku puzzles.
-		    shortcut.setPrimary (extras[i - 25]);
+			// Extras for keying in Mathdoku and Killer Sudoku puzzles.
+			shortcuts << QKeySequence(extras[i - 25]);
 		}
-		if(i < 9) {
-		    // Keys 1 to 9, for puzzles of order 9 or less.
-		    shortcut.setAlternate( Qt::Key_1 + i);
+		if (i < 9) {
+			// Keys 1 to 9, for puzzles of order 9 or less.
+			shortcuts << QKeySequence(Qt::Key_1 + i);
 		}
-		a->setShortcut(shortcut);
+		m_collection->setDefaultShortcuts(a, shortcuts);
 		m_enterValueMapper->setMapping(a, i+1);
 		connect(a, SIGNAL(triggered(bool)), m_enterValueMapper, SLOT(map()));
 		m_actions << a;
 		if (i >= 25) {
-		    continue;
+			continue;
 		}
 
-		a = new KAction(this);
+		shortcuts.clear();
+		a = new QAction(this);
 		m_collection->addAction(QString("val-mark%1").arg(i+1,2,10,QChar('0')), a);
 		a->setText(i18n("Mark %1 (%2)", QChar('a'+i), i+1));
-		shortcut = a->shortcut();
-		shortcut.setPrimary( QKeySequence(Qt::ShiftModifier | Qt::Key_A + i));
+		shortcuts << QKeySequence(Qt::ShiftModifier | (Qt::Key_A + i));
 		if(i < 9) {
-			shortcut.setAlternate( QKeySequence(Qt::ShiftModifier | Qt::Key_1 + i));
+			shortcuts << QKeySequence(Qt::ShiftModifier | (Qt::Key_1 + i));
 		}
-		a->setShortcut(shortcut);
+		m_collection->setDefaultShortcuts(a, shortcuts);
 		m_markValueMapper->setMapping(a, i+1);
 		connect(a, SIGNAL(triggered(bool)), m_markValueMapper, SLOT(map()));
 		m_actions << a;
 	}
 	
-	a = new KAction(this);
+	a = new QAction(this);
 	m_collection->addAction("move_up", a);
 	a->setText(i18n("Move Up"));
-	a->setShortcut(Qt::Key_Up);
+	m_collection->setDefaultShortcut(a, Qt::Key_Up);
 	connect(a, SIGNAL(triggered(bool)), SLOT(moveUp()));
 	m_actions << a;
 
-	a = new KAction(this);
+	a = new QAction(this);
 	m_collection->addAction("move_down", a);
 	a->setText(i18n("Move Down"));
-	a->setShortcut(Qt::Key_Down);
+	m_collection->setDefaultShortcut(a, Qt::Key_Down);
 	connect(a, SIGNAL(triggered(bool)), SLOT(moveDown()));
 	m_actions << a;
 
-	a = new KAction(this);
+	a = new QAction(this);
 	m_collection->addAction("move_left", a);
 	a->setText(i18n("Move Left"));
-	a->setShortcut(Qt::Key_Left);
+	m_collection->setDefaultShortcut(a, Qt::Key_Left);
 	connect(a, SIGNAL(triggered(bool)), SLOT(moveLeft()));
 	m_actions << a;
 
-	a = new KAction(this);
+	a = new QAction(this);
 	m_collection->addAction("move_right", a);
 	a->setText(i18n("Move Right"));
-	a->setShortcut(Qt::Key_Right);
+	m_collection->setDefaultShortcut(a, Qt::Key_Right);
 	connect(a, SIGNAL(triggered(bool)), SLOT(moveRight()));
 	m_actions << a;
 
-	a = new KAction(this);
+	a = new QAction(this);
 	m_collection->addAction("move_clear_cell", a);
 	a->setText(i18n("Clear Cell"));
-	shortcut = a->shortcut();
-	shortcut.setPrimary(Qt::Key_Backspace);
-	shortcut.setAlternate(Qt::Key_Delete);
-	a->setShortcut(shortcut);
+	m_collection->setDefaultShortcuts(a, QList<QKeySequence>()
+		<< QKeySequence(Qt::Key_Backspace)
+		<< QKeySequence(Qt::Key_Delete));
 	connect(a, SIGNAL(triggered(bool)), SLOT(clearValue()));
 	m_actions << a;
 }
 
 void GameActions::associateWidget(QWidget* widget) {
-	QVector<KAction*>::iterator it;
+	QVector<QAction *>::iterator it;
 	for(it = m_actions.begin(); it != m_actions.end(); ++it) {
 		widget->addAction(*it);
 	}
@@ -166,4 +165,4 @@ void GameActions::moveRight() {
 
 }
 
-#include "gameactions.moc"
+
diff --git a/src/gui/views/gameactions.h b/src/gui/views/gameactions.h
index 6b00a4b..0462999 100644
--- a/src/gui/views/gameactions.h
+++ b/src/gui/views/gameactions.h
@@ -23,7 +23,7 @@
 #include <QVector>
 #include <QObject>
 
-class KAction;
+class QAction;
 class KActionCollection;
 class QSignalMapper;
 
@@ -51,7 +51,7 @@ private:
 	QSignalMapper* m_selectValueMapper;
 	QSignalMapper* m_enterValueMapper;
 	QSignalMapper* m_markValueMapper;
-	QVector<KAction*> m_actions;
+	QVector<QAction *> m_actions;
 };
 
 }
diff --git a/src/gui/views/ksview.cpp b/src/gui/views/ksview.cpp
index 4dbaf68..4be151d 100644
--- a/src/gui/views/ksview.cpp
+++ b/src/gui/views/ksview.cpp
@@ -28,7 +28,7 @@
 #include <qpixmap.h>
 #include <qpainter.h>
 
-#include "ksview.moc"
+
 
 #include "puzzle.h"
 
diff --git a/src/gui/views/renderer.cpp b/src/gui/views/renderer.cpp
index faf8446..123c055 100644
--- a/src/gui/views/renderer.cpp
+++ b/src/gui/views/renderer.cpp
@@ -21,9 +21,8 @@
 #include "renderer.h"
 
 #include <QSvgRenderer>
-#include <KStandardDirs>
-#include <kpixmapcache.h>
 
+#include <KDebug>
 #define USE_UNSTABLE_LIBKDEGAMESPRIVATE_API
 #include <libkdegamesprivate/kgametheme.h>
 
@@ -43,8 +42,7 @@ Renderer* Renderer::instance() {
 	
 Renderer::Renderer() {
 	m_renderer = new QSvgRenderer();
-	m_cache = new KPixmapCache("ksudoku-cache");
-	m_cache->setCacheLimit(3*1024);
+	m_cache = new KImageCache(QStringLiteral("ksudoku-cache"), 3*1024);
 	m_mathdokuStyle = false;
 	
 	if(!loadTheme(Settings::theme()))
@@ -84,7 +82,7 @@ bool Renderer::loadTheme(const QString& themeName) {
 	
 	if(discardCache) {
 		kDebug() << "discarding cache";
-		m_cache->discard();
+		m_cache->clear();
 	}
 	
 	fillNameHashes();
@@ -148,14 +146,14 @@ QPixmap Renderer::renderBackground(const QSize& size) const {
 
 	QPixmap pix;
 	QString cacheName = QString("background_%1x%2").arg(size.width()).arg(size.height());
-	if(!m_cache->find(cacheName, pix))
+	if(!m_cache->findPixmap(cacheName, &pix))
 	{
 		pix = QPixmap(size);
 		pix.fill(Qt::transparent);
 		QPainter p(&pix);
 		m_renderer->render(&p, "background");
 		p.end();
-		m_cache->insert(cacheName, pix);
+		m_cache->insertPixmap(cacheName, pix);
 	}
 	return pix;
 }
@@ -184,7 +182,7 @@ QPixmap Renderer::renderSpecial(SpecialType type, int size) const {
 	
 	QString cacheName = QString("special_%1_%2").arg(m_specialNames[type]).arg(size);
 	QPixmap pix;
-	if(!m_cache->find(cacheName, pix)) {
+	if(!m_cache->findPixmap(cacheName, &pix)) {
 		pix = QPixmap(size, size);
 		pix.fill(Qt::transparent);
 		QPainter p(&pix);
@@ -198,7 +196,7 @@ QPixmap Renderer::renderSpecial(SpecialType type, int size) const {
 		
 		m_renderer->render(&p, m_specialNames[type], r);
 		p.end();
-		m_cache->insert(cacheName, pix);
+		m_cache->insertPixmap(cacheName, pix);
 	}
 
 	return pix;
@@ -216,7 +214,7 @@ QPixmap Renderer::renderSymbol(int symbol, int size, int max, SymbolType type) c
 
 	QString cacheName = QString("%1_%2_%3_%4").arg(set).arg(symbol).arg(size).arg(type);
 	QPixmap pix;
-	if(!m_cache->find(cacheName, pix)) {
+	if(!m_cache->findPixmap(cacheName, &pix)) {
 		pix = QPixmap(size, size);
 		pix.fill(Qt::transparent);
 		QPainter p(&pix);
@@ -247,7 +245,7 @@ QPixmap Renderer::renderSymbol(int symbol, int size, int max, SymbolType type) c
 				break;
 		}
 		p.end();
-		m_cache->insert(cacheName, pix);
+		m_cache->insertPixmap(cacheName, pix);
 	}
 
 	return pix;
@@ -300,7 +298,7 @@ QPixmap Renderer::renderMarker(int symbol, int range, int size) const {
 	QString groupName = QString("markers%1").arg(range);
 	QString cacheName = QString("%1_%2_%3").arg(groupName).arg(symbol).arg(size);
 	QPixmap pix;
-	if(!m_cache->find(cacheName, pix)) {
+	if(!m_cache->findPixmap(cacheName, &pix)) {
 		pix = QPixmap(size, size);
 		pix.fill(Qt::transparent);
 		QPainter p(&pix);
@@ -316,7 +314,7 @@ QPixmap Renderer::renderMarker(int symbol, int range, int size) const {
 
 		m_renderer->render(&p, QString("%1_%2").arg(set).arg(symbol), r);
 		p.end();
-		m_cache->insert(cacheName, pix);
+		m_cache->insertPixmap(cacheName, pix);
 	}
 
 	return pix;
@@ -383,7 +381,7 @@ QPixmap Renderer::renderBorder(int border, GroupTypes type, int size) const {
 	
 	QString cacheName = QString("contour_%1_%2_%3").arg(m_borderTypes[type]).arg(m_borderNames[border]).arg(size);
 	QPixmap pix;
-	if(!m_cache->find(cacheName, pix)) {
+	if(!m_cache->findPixmap(cacheName, &pix)) {
 		pix = QPixmap(size, size);
 		pix.fill(Qt::transparent);
 		QPainter p(&pix);
@@ -397,7 +395,7 @@ QPixmap Renderer::renderBorder(int border, GroupTypes type, int size) const {
 		
 		m_renderer->render(&p, QString("%1_%2").arg(m_borderTypes[type]).arg(m_borderNames[border]), r);
 		p.end();
-		m_cache->insert(cacheName, pix);
+		m_cache->insertPixmap(cacheName, pix);
 	}
 
 	return pix;
@@ -408,7 +406,7 @@ QPixmap Renderer::renderSpecial3D(SpecialType type, int size) const {
 
 	QString cacheName = QString("special_%1_%2").arg(m_special3dNames[type]).arg(size);
 	QPixmap pix;
-	if(!m_cache->find(cacheName, pix)) {
+	if(!m_cache->findPixmap(cacheName, &pix)) {
 		pix = QPixmap(size, size);
 		pix.fill(Qt::transparent);
 		QPainter p(&pix);
@@ -422,7 +420,7 @@ QPixmap Renderer::renderSpecial3D(SpecialType type, int size) const {
 		
 		m_renderer->render(&p, m_special3dNames[type], r);
 		p.end();
-		m_cache->insert(cacheName, pix);
+		m_cache->insertPixmap(cacheName, pix);
 	}
 
 	return pix;
diff --git a/src/gui/views/renderer.h b/src/gui/views/renderer.h
index c386122..47e312c 100644
--- a/src/gui/views/renderer.h
+++ b/src/gui/views/renderer.h
@@ -21,6 +21,8 @@
 #ifndef _KSUDOKU_RENDERER_H_
 #define _KSUDOKU_RENDERER_H_
 
+#include <KImageCache>
+
 #include <QVector>
 // #include <QPixmap>
 #include <QString>
@@ -28,7 +30,6 @@
 class QPixmap;
 class QSize;
 class QSvgRenderer;
-class KPixmapCache;
 
 namespace ksudoku {
 
@@ -122,7 +123,7 @@ private:
 	QVector<QString> m_markerNames;
 	QString m_currentTheme;
 	QSvgRenderer* m_renderer;
-	KPixmapCache* m_cache;
+	KImageCache* m_cache;
 	bool m_mathdokuStyle;
 };
 
diff --git a/src/gui/views/roxdokuview.cpp b/src/gui/views/roxdokuview.cpp
index 2f9bacc..aa25deb 100644
--- a/src/gui/views/roxdokuview.cpp
+++ b/src/gui/views/roxdokuview.cpp
@@ -31,7 +31,7 @@
 //Added by qt3to4:
 #include <QPixmap>
 #include <QMouseEvent>
-#include <klocale.h>
+#include <KLocalizedString>
 
 #include "settings.h"
 
@@ -547,4 +547,4 @@ void RoxdokuView::paintGL()
 
 }
 
-#include "roxdokuview.moc"
+
diff --git a/src/gui/views/valuelistwidget.cpp b/src/gui/views/valuelistwidget.cpp
index 94594a9..5ab9c9a 100644
--- a/src/gui/views/valuelistwidget.cpp
+++ b/src/gui/views/valuelistwidget.cpp
@@ -19,7 +19,7 @@
 
 #include "valuelistwidget.h"
 
-#include "valuelistwidget.moc"
+
 
 #include <QGraphicsSimpleTextItem>
 #include <QWheelEvent>
diff --git a/src/gui/views/view2d.cpp b/src/gui/views/view2d.cpp
index 2159713..d4d66d0 100644
--- a/src/gui/views/view2d.cpp
+++ b/src/gui/views/view2d.cpp
@@ -20,7 +20,7 @@
 
 #include "view2d.h"
 
-#include "view2d.moc" 
+ 
 
 #include <QGraphicsPixmapItem>
 #include <QGraphicsSceneEvent>
diff --git a/src/gui/welcomescreen.cpp b/src/gui/welcomescreen.cpp
index cbe46e0..527d9f1 100644
--- a/src/gui/welcomescreen.cpp
+++ b/src/gui/welcomescreen.cpp
@@ -20,8 +20,9 @@
 #include "welcomescreen.h"
 
 #include <KMessageBox>
-
+#include <KConfigGroup>
 #include <QDebug>
+#include <KSharedConfig>
 
 #include "ksudokugame.h"
 #include "globals.h"
@@ -59,7 +60,7 @@ WelcomeScreen::WelcomeScreen(QWidget* parent, GameVariantCollection* collection)
 	gameListWidget->setSelectionMode(QAbstractItemView::SingleSelection);
 
 	// Get the previous puzzle configuration.
-	KConfigGroup gameGroup (KGlobal::config(), "KSudokuGame");
+	KConfigGroup gameGroup (KSharedConfig::openConfig(), "KSudokuGame");
 	m_selectedPuzzle = gameGroup.readEntry("SelectedPuzzle", 0);
 	m_difficulty     = gameGroup.readEntry("Difficulty", (int) VeryEasy);
 	m_symmetry       = gameGroup.readEntry("Symmetry"  , (int) CENTRAL);
@@ -72,15 +73,15 @@ WelcomeScreen::WelcomeScreen(QWidget* parent, GameVariantCollection* collection)
 
 	connect(gameListWidget->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), this, SLOT(onCurrentVariantChange()));
 	
-	connect(getNewGameButton, SIGNAL(clicked(bool)), this, SLOT(getNewVariant()));
+	connect(getNewGameButton, &QPushButton::clicked, this, &WelcomeScreen::getNewVariant);
 	// TODO disabled due to missing per-game config dialog
 // 	connect(configureGameButton, SIGNAL(clicked(bool)), this, SLOT(configureVariant()));
 	// connect(playGameButton, SIGNAL(clicked(bool)), this, SLOT(playVariant()));			// Disable old create-game code.
 	// connect(gameListWidget, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(playVariant()));	// Disable old create-game code.
 
-	connect(startEmptyButton, SIGNAL(clicked(bool)), this, SLOT(startEmptyGame()));
-	connect(puzzleGeneratorButton, SIGNAL(clicked(bool)), this, SLOT(generatePuzzle()));
-	connect(gameListWidget, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(generatePuzzle()));
+	connect(startEmptyButton, &QPushButton::clicked, this, &WelcomeScreen::startEmptyGame);
+	connect(puzzleGeneratorButton, &QPushButton::clicked, this, &WelcomeScreen::generatePuzzle);
+	connect(gameListWidget, &QListView::doubleClicked, this, &WelcomeScreen::generatePuzzle);
 
 	// GHNS is not implemented yet, so don't show an unuseful button
 	getNewGameButton->hide();
@@ -169,7 +170,7 @@ void WelcomeScreen::generatePuzzle() {
 	QModelIndex index = gameListWidget->currentIndex();
 	m_selectedPuzzle = index.row();
 
-	KConfigGroup gameGroup (KGlobal::config(), "KSudokuGame");
+	KConfigGroup gameGroup (KSharedConfig::openConfig(), "KSudokuGame");
 	gameGroup.writeEntry("SelectedPuzzle", m_selectedPuzzle);
 	gameGroup.writeEntry("Difficulty", m_difficulty);
 	gameGroup.writeEntry("Symmetry"  , m_symmetry);
@@ -184,4 +185,4 @@ void WelcomeScreen::generatePuzzle() {
 
 }
 
-#include "welcomescreen.moc"
+
diff --git a/src/logic/CMakeLists.txt b/src/logic/CMakeLists.txt
index f68dd61..8a64070 100644
--- a/src/logic/CMakeLists.txt
+++ b/src/logic/CMakeLists.txt
@@ -3,5 +3,5 @@ set(ksudoku_logic_SRCS
 	puzzle.cpp
 )
 
-kde4_add_library(ksudoku_logic STATIC ${ksudoku_logic_SRCS})
-target_link_libraries(ksudoku_logic ${QT_QTCORE_LIBRARY})
+add_library(ksudoku_logic STATIC ${ksudoku_logic_SRCS})
+target_link_libraries(ksudoku_logic Qt5::Core)
diff --git a/src/logic/puzzle.cpp b/src/logic/puzzle.cpp
index 542de8c..905d469 100644
--- a/src/logic/puzzle.cpp
+++ b/src/logic/puzzle.cpp
@@ -22,9 +22,8 @@
 
 #include "puzzle.h"
 #include <cstdlib>
-#include <time.h>
-#include <qstring.h>
 
+#include <QString>
 #include <QtDebug>
 
 #include "sudokuboard.h"
@@ -54,7 +53,7 @@ int Puzzle::hintIndex(int moveNum) const {
 
 bool Puzzle::init() {
 	if(m_initialized) return false;
-	
+
 	if(m_withSolution)
 		return false;
 
diff --git a/src/main.cpp b/src/main.cpp
index 7f5ddcc..ff7067e 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -21,17 +21,22 @@
  ***************************************************************************/
 
 #include "ksudoku.h"
-#include <kapplication.h>
+
 //#include <dcopclient.h>
-#include <kaboutdata.h>
-#include <kcmdlineargs.h>
-#include <klocale.h>
+#include <KAboutData>
+#include <KCrash>
+
+#include <KLocalizedString>
 #include <kconfigdialogmanager.h>
+#include <KUrl>
 
-#include <cstdlib>
-#include <time.h>
+#include <QApplication>
+#include <QCommandLineParser>
+#include <QCommandLineOption>
+#include <QDir>
 
-#include <KUrl>
+#include <cstdlib>
+#include <ctime>
 
 
 static const char description[] =
@@ -42,33 +47,43 @@ static const char version[] = "1.3";
 
 int main(int argc, char **argv)
 {
-	std::srand(time(0));
+	qsrand(std::time(nullptr));
+	QApplication app(argc, argv);
+	KLocalizedString::setApplicationDomain("ksudoku");
 
-	KAboutData about("ksudoku", 0,
-	                 ki18n("KSudoku"),
+	KAboutData about("ksudoku",
+	                 i18n("KSudoku"),
 	                 version,
-	                 ki18n("KSudoku - Sudoku games and more"),
-	                 KAboutData::License_GPL_V2,
-	                 ki18n("(c) 2005-2007 The KSudoku Authors"),
-	                 KLocalizedString(), "http://ksudoku.sourceforge.net/");
-	about.addAuthor( ki18n("Francesco Rossi"), ki18n("KSudoku Author"), "redsh at email.it" );
-	about.addAuthor( ki18n("Johannes Bergmeier"), ki18n("Maintainer"), "Johannes.Bergmeier at gmx.net" );
-	about.addAuthor( ki18n("Ian Wadham"), ki18n("New puzzle generator and solver"), "iandw.au at gmail.com" );
-	about.addAuthor( ki18n("Mick Kappenburg"), ki18n("Printing and export of 0.4"), "ksudoku at kappendburg.net");
-	about.addAuthor( ki18n("Thanks to NeHe for OpenGL tutorials"), KLocalizedString(), "nehe.gamedev.net");
-	about.addCredit( ki18n("David Bau"), ki18n("Algorithms for new puzzle generator and solver at davidbau.com/archives/2006/09/04/sudoku_generator.html"), "");
-	KCmdLineArgs::init(argc, argv, &about);
-
-	KCmdLineOptions options;
-	options.add("+[URL]", ki18n( "Document to open" ));
-	KCmdLineArgs::addCmdLineOptions(options);
-	KApplication app;
-	KGlobal::locale()->insertCatalog( QLatin1String( "libkdegames" ));
+	                 i18n(description),
+	                 KAboutLicense::GPL_V2,
+	                 i18n("(c) 2005-2007 The KSudoku Authors"),
+	                 QString(), "https://games.kde.org/game.php?game=ksudoku");
+	about.addAuthor( i18n("Francesco Rossi"), i18n("KSudoku Author"), "redsh at email.it" );
+	about.addAuthor( i18n("Johannes Bergmeier"), i18n("Maintainer"), "Johannes.Bergmeier at gmx.net" );
+	about.addAuthor( i18n("Ian Wadham"), i18n("New puzzle generator and solver"), "iandw.au at gmail.com" );
+	about.addAuthor( i18n("Mick Kappenburg"), i18n("Printing and export of 0.4"), "ksudoku at kappendburg.net");
+	about.addAuthor( i18n("Thanks to NeHe for OpenGL tutorials"), QString(), "nehe.gamedev.net");
+	about.addCredit( i18n("David Bau"), i18n("Algorithms for new puzzle generator and solver at davidbau.com/archives/2006/09/04/sudoku_generator.html"), "");
+
+	KAboutData::setApplicationData(about);
+	app.setOrganizationDomain(QStringLiteral("kde.org"));
+	app.setWindowIcon(QIcon::fromTheme(QStringLiteral("ksudoku")));
+
+	QCommandLineParser parser;
+	about.setupCommandLine(&parser);
+	parser.addVersionOption();
+	parser.addHelpOption();
+	parser.addPositionalArgument(QLatin1String("[URL]"), i18n( "Document to open" ));
+
+	parser.process(app);
+	about.processCommandLine(&parser);
+
+	KCrash::initialize();
 
 	// register ourselves as a dcop client
 //	app.dcopClient()->registerAs(app.name(), false); //TODO PORT
-	
-	 KConfigDialogManager::changedMap()->insert("ksudoku::SymbolConfigListWidget", SIGNAL(itemChanged(QListWidgetItem*)));
+
+	KConfigDialogManager::changedMap()->insert("ksudoku::SymbolConfigListWidget", SIGNAL(itemChanged(QListWidgetItem*)));
 
 	// see if we are starting with session management
 	/*if (app.isRestored())
@@ -81,15 +96,14 @@ int main(int argc, char **argv)
 		widget->show();
 
 		// no session.. just start up normally
-		KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
-		if (args->count() != 0)
+		if (parser.positionalArguments().count() != 0)
 		{
-			for (int i = 0; i < args->count(); ++i)
+			for (int i = 0; i < parser.positionalArguments().count(); ++i)
 			{
-				widget->loadGame(args->url(i));
+				widget->loadGame(QUrl::fromUserInput(parser.positionalArguments().at(i), QDir::currentPath()));
 			}
 		}
-		args->clear();
+
 	//} //TODO PORT
 
 	return app.exec();
diff --git a/src/shapes/hi128-action-ksudoku-jigsaw.png b/src/shapes/128-actions-ksudoku-jigsaw.png
similarity index 100%
rename from src/shapes/hi128-action-ksudoku-jigsaw.png
rename to src/shapes/128-actions-ksudoku-jigsaw.png
diff --git a/src/shapes/hi128-action-ksudoku-ksudoku_16x16.png b/src/shapes/128-actions-ksudoku-ksudoku_16x16.png
similarity index 100%
rename from src/shapes/hi128-action-ksudoku-ksudoku_16x16.png
rename to src/shapes/128-actions-ksudoku-ksudoku_16x16.png
diff --git a/src/shapes/hi128-action-ksudoku-ksudoku_25x25.png b/src/shapes/128-actions-ksudoku-ksudoku_25x25.png
similarity index 100%
rename from src/shapes/hi128-action-ksudoku-ksudoku_25x25.png
rename to src/shapes/128-actions-ksudoku-ksudoku_25x25.png
diff --git a/src/shapes/hi128-action-ksudoku-ksudoku_4x4.png b/src/shapes/128-actions-ksudoku-ksudoku_4x4.png
similarity index 100%
rename from src/shapes/hi128-action-ksudoku-ksudoku_4x4.png
rename to src/shapes/128-actions-ksudoku-ksudoku_4x4.png
diff --git a/src/shapes/hi128-action-ksudoku-ksudoku_9x9.png b/src/shapes/128-actions-ksudoku-ksudoku_9x9.png
similarity index 100%
rename from src/shapes/hi128-action-ksudoku-ksudoku_9x9.png
rename to src/shapes/128-actions-ksudoku-ksudoku_9x9.png
diff --git a/src/shapes/hi128-action-ksudoku-roxdoku_3x3x3.png b/src/shapes/128-actions-ksudoku-roxdoku_3x3x3.png
similarity index 100%
rename from src/shapes/hi128-action-ksudoku-roxdoku_3x3x3.png
rename to src/shapes/128-actions-ksudoku-roxdoku_3x3x3.png
diff --git a/src/shapes/hi128-action-ksudoku-roxdoku_4x4x4.png b/src/shapes/128-actions-ksudoku-roxdoku_4x4x4.png
similarity index 100%
rename from src/shapes/hi128-action-ksudoku-roxdoku_4x4x4.png
rename to src/shapes/128-actions-ksudoku-roxdoku_4x4x4.png
diff --git a/src/shapes/hi128-action-ksudoku-roxdoku_5x5x5.png b/src/shapes/128-actions-ksudoku-roxdoku_5x5x5.png
similarity index 100%
rename from src/shapes/hi128-action-ksudoku-roxdoku_5x5x5.png
rename to src/shapes/128-actions-ksudoku-roxdoku_5x5x5.png
diff --git a/src/shapes/hi128-action-ksudoku-samurai.png b/src/shapes/128-actions-ksudoku-samurai.png
similarity index 100%
rename from src/shapes/hi128-action-ksudoku-samurai.png
rename to src/shapes/128-actions-ksudoku-samurai.png
diff --git a/src/shapes/hi128-action-ksudoku-tiny_samurai.png b/src/shapes/128-actions-ksudoku-tiny_samurai.png
similarity index 100%
rename from src/shapes/hi128-action-ksudoku-tiny_samurai.png
rename to src/shapes/128-actions-ksudoku-tiny_samurai.png
diff --git a/src/shapes/hi128-action-ksudoku-xsudoku.png b/src/shapes/128-actions-ksudoku-xsudoku.png
similarity index 100%
rename from src/shapes/hi128-action-ksudoku-xsudoku.png
rename to src/shapes/128-actions-ksudoku-xsudoku.png
diff --git a/src/shapes/hi128-action-ksudoku.png b/src/shapes/128-actions-ksudoku.png
similarity index 100%
rename from src/shapes/hi128-action-ksudoku.png
rename to src/shapes/128-actions-ksudoku.png
diff --git a/src/shapes/hi16-action-ksudoku-jigsaw.png b/src/shapes/16-actions-ksudoku-jigsaw.png
similarity index 100%
rename from src/shapes/hi16-action-ksudoku-jigsaw.png
rename to src/shapes/16-actions-ksudoku-jigsaw.png
diff --git a/src/shapes/hi16-action-ksudoku-ksudoku_16x16.png b/src/shapes/16-actions-ksudoku-ksudoku_16x16.png
similarity index 100%
rename from src/shapes/hi16-action-ksudoku-ksudoku_16x16.png
rename to src/shapes/16-actions-ksudoku-ksudoku_16x16.png
diff --git a/src/shapes/hi16-action-ksudoku-ksudoku_25x25.png b/src/shapes/16-actions-ksudoku-ksudoku_25x25.png
similarity index 100%
rename from src/shapes/hi16-action-ksudoku-ksudoku_25x25.png
rename to src/shapes/16-actions-ksudoku-ksudoku_25x25.png
diff --git a/src/shapes/hi16-action-ksudoku-ksudoku_4x4.png b/src/shapes/16-actions-ksudoku-ksudoku_4x4.png
similarity index 100%
rename from src/shapes/hi16-action-ksudoku-ksudoku_4x4.png
rename to src/shapes/16-actions-ksudoku-ksudoku_4x4.png
diff --git a/src/shapes/hi16-action-ksudoku-ksudoku_9x9.png b/src/shapes/16-actions-ksudoku-ksudoku_9x9.png
similarity index 100%
rename from src/shapes/hi16-action-ksudoku-ksudoku_9x9.png
rename to src/shapes/16-actions-ksudoku-ksudoku_9x9.png
diff --git a/src/shapes/hi16-action-ksudoku-roxdoku_3x3x3.png b/src/shapes/16-actions-ksudoku-roxdoku_3x3x3.png
similarity index 100%
rename from src/shapes/hi16-action-ksudoku-roxdoku_3x3x3.png
rename to src/shapes/16-actions-ksudoku-roxdoku_3x3x3.png
diff --git a/src/shapes/hi16-action-ksudoku-roxdoku_4x4x4.png b/src/shapes/16-actions-ksudoku-roxdoku_4x4x4.png
similarity index 100%
rename from src/shapes/hi16-action-ksudoku-roxdoku_4x4x4.png
rename to src/shapes/16-actions-ksudoku-roxdoku_4x4x4.png
diff --git a/src/shapes/hi16-action-ksudoku-roxdoku_5x5x5.png b/src/shapes/16-actions-ksudoku-roxdoku_5x5x5.png
similarity index 100%
rename from src/shapes/hi16-action-ksudoku-roxdoku_5x5x5.png
rename to src/shapes/16-actions-ksudoku-roxdoku_5x5x5.png
diff --git a/src/shapes/hi16-action-ksudoku-samurai.png b/src/shapes/16-actions-ksudoku-samurai.png
similarity index 100%
rename from src/shapes/hi16-action-ksudoku-samurai.png
rename to src/shapes/16-actions-ksudoku-samurai.png
diff --git a/src/shapes/hi16-action-ksudoku-tiny_samurai.png b/src/shapes/16-actions-ksudoku-tiny_samurai.png
similarity index 100%
rename from src/shapes/hi16-action-ksudoku-tiny_samurai.png
rename to src/shapes/16-actions-ksudoku-tiny_samurai.png
diff --git a/src/shapes/hi16-action-ksudoku-xsudoku.png b/src/shapes/16-actions-ksudoku-xsudoku.png
similarity index 100%
rename from src/shapes/hi16-action-ksudoku-xsudoku.png
rename to src/shapes/16-actions-ksudoku-xsudoku.png
diff --git a/src/shapes/hi16-action-ksudoku.png b/src/shapes/16-actions-ksudoku.png
similarity index 100%
rename from src/shapes/hi16-action-ksudoku.png
rename to src/shapes/16-actions-ksudoku.png
diff --git a/src/shapes/hi22-action-ksudoku-jigsaw.png b/src/shapes/22-actions-ksudoku-jigsaw.png
similarity index 100%
rename from src/shapes/hi22-action-ksudoku-jigsaw.png
rename to src/shapes/22-actions-ksudoku-jigsaw.png
diff --git a/src/shapes/hi22-action-ksudoku-ksudoku_16x16.png b/src/shapes/22-actions-ksudoku-ksudoku_16x16.png
similarity index 100%
rename from src/shapes/hi22-action-ksudoku-ksudoku_16x16.png
rename to src/shapes/22-actions-ksudoku-ksudoku_16x16.png
diff --git a/src/shapes/hi22-action-ksudoku-ksudoku_25x25.png b/src/shapes/22-actions-ksudoku-ksudoku_25x25.png
similarity index 100%
rename from src/shapes/hi22-action-ksudoku-ksudoku_25x25.png
rename to src/shapes/22-actions-ksudoku-ksudoku_25x25.png
diff --git a/src/shapes/hi22-action-ksudoku-ksudoku_4x4.png b/src/shapes/22-actions-ksudoku-ksudoku_4x4.png
similarity index 100%
rename from src/shapes/hi22-action-ksudoku-ksudoku_4x4.png
rename to src/shapes/22-actions-ksudoku-ksudoku_4x4.png
diff --git a/src/shapes/hi22-action-ksudoku-ksudoku_9x9.png b/src/shapes/22-actions-ksudoku-ksudoku_9x9.png
similarity index 100%
rename from src/shapes/hi22-action-ksudoku-ksudoku_9x9.png
rename to src/shapes/22-actions-ksudoku-ksudoku_9x9.png
diff --git a/src/shapes/hi22-action-ksudoku-roxdoku_3x3x3.png b/src/shapes/22-actions-ksudoku-roxdoku_3x3x3.png
similarity index 100%
rename from src/shapes/hi22-action-ksudoku-roxdoku_3x3x3.png
rename to src/shapes/22-actions-ksudoku-roxdoku_3x3x3.png
diff --git a/src/shapes/hi22-action-ksudoku-roxdoku_4x4x4.png b/src/shapes/22-actions-ksudoku-roxdoku_4x4x4.png
similarity index 100%
rename from src/shapes/hi22-action-ksudoku-roxdoku_4x4x4.png
rename to src/shapes/22-actions-ksudoku-roxdoku_4x4x4.png
diff --git a/src/shapes/hi22-action-ksudoku-roxdoku_5x5x5.png b/src/shapes/22-actions-ksudoku-roxdoku_5x5x5.png
similarity index 100%
rename from src/shapes/hi22-action-ksudoku-roxdoku_5x5x5.png
rename to src/shapes/22-actions-ksudoku-roxdoku_5x5x5.png
diff --git a/src/shapes/hi22-action-ksudoku-samurai.png b/src/shapes/22-actions-ksudoku-samurai.png
similarity index 100%
rename from src/shapes/hi22-action-ksudoku-samurai.png
rename to src/shapes/22-actions-ksudoku-samurai.png
diff --git a/src/shapes/hi22-action-ksudoku-tiny_samurai.png b/src/shapes/22-actions-ksudoku-tiny_samurai.png
similarity index 100%
rename from src/shapes/hi22-action-ksudoku-tiny_samurai.png
rename to src/shapes/22-actions-ksudoku-tiny_samurai.png
diff --git a/src/shapes/hi22-action-ksudoku-xsudoku.png b/src/shapes/22-actions-ksudoku-xsudoku.png
similarity index 100%
rename from src/shapes/hi22-action-ksudoku-xsudoku.png
rename to src/shapes/22-actions-ksudoku-xsudoku.png
diff --git a/src/shapes/hi22-action-ksudoku.png b/src/shapes/22-actions-ksudoku.png
similarity index 100%
rename from src/shapes/hi22-action-ksudoku.png
rename to src/shapes/22-actions-ksudoku.png
diff --git a/src/shapes/hi32-action-ksudoku-jigsaw.png b/src/shapes/32-actions-ksudoku-jigsaw.png
similarity index 100%
rename from src/shapes/hi32-action-ksudoku-jigsaw.png
rename to src/shapes/32-actions-ksudoku-jigsaw.png
diff --git a/src/shapes/hi32-action-ksudoku-ksudoku_16x16.png b/src/shapes/32-actions-ksudoku-ksudoku_16x16.png
similarity index 100%
rename from src/shapes/hi32-action-ksudoku-ksudoku_16x16.png
rename to src/shapes/32-actions-ksudoku-ksudoku_16x16.png
diff --git a/src/shapes/hi32-action-ksudoku-ksudoku_25x25.png b/src/shapes/32-actions-ksudoku-ksudoku_25x25.png
similarity index 100%
rename from src/shapes/hi32-action-ksudoku-ksudoku_25x25.png
rename to src/shapes/32-actions-ksudoku-ksudoku_25x25.png
diff --git a/src/shapes/hi32-action-ksudoku-ksudoku_4x4.png b/src/shapes/32-actions-ksudoku-ksudoku_4x4.png
similarity index 100%
rename from src/shapes/hi32-action-ksudoku-ksudoku_4x4.png
rename to src/shapes/32-actions-ksudoku-ksudoku_4x4.png
diff --git a/src/shapes/hi32-action-ksudoku-ksudoku_9x9.png b/src/shapes/32-actions-ksudoku-ksudoku_9x9.png
similarity index 100%
rename from src/shapes/hi32-action-ksudoku-ksudoku_9x9.png
rename to src/shapes/32-actions-ksudoku-ksudoku_9x9.png
diff --git a/src/shapes/hi32-action-ksudoku-roxdoku_3x3x3.png b/src/shapes/32-actions-ksudoku-roxdoku_3x3x3.png
similarity index 100%
rename from src/shapes/hi32-action-ksudoku-roxdoku_3x3x3.png
rename to src/shapes/32-actions-ksudoku-roxdoku_3x3x3.png
diff --git a/src/shapes/hi32-action-ksudoku-roxdoku_4x4x4.png b/src/shapes/32-actions-ksudoku-roxdoku_4x4x4.png
similarity index 100%
rename from src/shapes/hi32-action-ksudoku-roxdoku_4x4x4.png
rename to src/shapes/32-actions-ksudoku-roxdoku_4x4x4.png
diff --git a/src/shapes/hi32-action-ksudoku-roxdoku_5x5x5.png b/src/shapes/32-actions-ksudoku-roxdoku_5x5x5.png
similarity index 100%
rename from src/shapes/hi32-action-ksudoku-roxdoku_5x5x5.png
rename to src/shapes/32-actions-ksudoku-roxdoku_5x5x5.png
diff --git a/src/shapes/hi32-action-ksudoku-samurai.png b/src/shapes/32-actions-ksudoku-samurai.png
similarity index 100%
rename from src/shapes/hi32-action-ksudoku-samurai.png
rename to src/shapes/32-actions-ksudoku-samurai.png
diff --git a/src/shapes/hi32-action-ksudoku-tiny_samurai.png b/src/shapes/32-actions-ksudoku-tiny_samurai.png
similarity index 100%
rename from src/shapes/hi32-action-ksudoku-tiny_samurai.png
rename to src/shapes/32-actions-ksudoku-tiny_samurai.png
diff --git a/src/shapes/hi32-action-ksudoku-xsudoku.png b/src/shapes/32-actions-ksudoku-xsudoku.png
similarity index 100%
rename from src/shapes/hi32-action-ksudoku-xsudoku.png
rename to src/shapes/32-actions-ksudoku-xsudoku.png
diff --git a/src/shapes/hi32-action-ksudoku.png b/src/shapes/32-actions-ksudoku.png
similarity index 100%
rename from src/shapes/hi32-action-ksudoku.png
rename to src/shapes/32-actions-ksudoku.png
diff --git a/src/shapes/hi48-action-ksudoku-jigsaw.png b/src/shapes/48-actions-ksudoku-jigsaw.png
similarity index 100%
rename from src/shapes/hi48-action-ksudoku-jigsaw.png
rename to src/shapes/48-actions-ksudoku-jigsaw.png
diff --git a/src/shapes/hi48-action-ksudoku-ksudoku_16x16.png b/src/shapes/48-actions-ksudoku-ksudoku_16x16.png
similarity index 100%
rename from src/shapes/hi48-action-ksudoku-ksudoku_16x16.png
rename to src/shapes/48-actions-ksudoku-ksudoku_16x16.png
diff --git a/src/shapes/hi48-action-ksudoku-ksudoku_25x25.png b/src/shapes/48-actions-ksudoku-ksudoku_25x25.png
similarity index 100%
rename from src/shapes/hi48-action-ksudoku-ksudoku_25x25.png
rename to src/shapes/48-actions-ksudoku-ksudoku_25x25.png
diff --git a/src/shapes/hi48-action-ksudoku-ksudoku_4x4.png b/src/shapes/48-actions-ksudoku-ksudoku_4x4.png
similarity index 100%
rename from src/shapes/hi48-action-ksudoku-ksudoku_4x4.png
rename to src/shapes/48-actions-ksudoku-ksudoku_4x4.png
diff --git a/src/shapes/hi48-action-ksudoku-ksudoku_9x9.png b/src/shapes/48-actions-ksudoku-ksudoku_9x9.png
similarity index 100%
rename from src/shapes/hi48-action-ksudoku-ksudoku_9x9.png
rename to src/shapes/48-actions-ksudoku-ksudoku_9x9.png
diff --git a/src/shapes/hi48-action-ksudoku-roxdoku_3x3x3.png b/src/shapes/48-actions-ksudoku-roxdoku_3x3x3.png
similarity index 100%
rename from src/shapes/hi48-action-ksudoku-roxdoku_3x3x3.png
rename to src/shapes/48-actions-ksudoku-roxdoku_3x3x3.png
diff --git a/src/shapes/hi48-action-ksudoku-roxdoku_4x4x4.png b/src/shapes/48-actions-ksudoku-roxdoku_4x4x4.png
similarity index 100%
rename from src/shapes/hi48-action-ksudoku-roxdoku_4x4x4.png
rename to src/shapes/48-actions-ksudoku-roxdoku_4x4x4.png
diff --git a/src/shapes/hi48-action-ksudoku-roxdoku_5x5x5.png b/src/shapes/48-actions-ksudoku-roxdoku_5x5x5.png
similarity index 100%
rename from src/shapes/hi48-action-ksudoku-roxdoku_5x5x5.png
rename to src/shapes/48-actions-ksudoku-roxdoku_5x5x5.png
diff --git a/src/shapes/hi48-action-ksudoku-samurai.png b/src/shapes/48-actions-ksudoku-samurai.png
similarity index 100%
rename from src/shapes/hi48-action-ksudoku-samurai.png
rename to src/shapes/48-actions-ksudoku-samurai.png
diff --git a/src/shapes/hi48-action-ksudoku-tiny_samurai.png b/src/shapes/48-actions-ksudoku-tiny_samurai.png
similarity index 100%
rename from src/shapes/hi48-action-ksudoku-tiny_samurai.png
rename to src/shapes/48-actions-ksudoku-tiny_samurai.png
diff --git a/src/shapes/hi48-action-ksudoku-xsudoku.png b/src/shapes/48-actions-ksudoku-xsudoku.png
similarity index 100%
rename from src/shapes/hi48-action-ksudoku-xsudoku.png
rename to src/shapes/48-actions-ksudoku-xsudoku.png
diff --git a/src/shapes/hi48-action-ksudoku.png b/src/shapes/48-actions-ksudoku.png
similarity index 100%
rename from src/shapes/hi48-action-ksudoku.png
rename to src/shapes/48-actions-ksudoku.png
diff --git a/src/shapes/hi64-action-ksudoku-jigsaw.png b/src/shapes/64-actions-ksudoku-jigsaw.png
similarity index 100%
rename from src/shapes/hi64-action-ksudoku-jigsaw.png
rename to src/shapes/64-actions-ksudoku-jigsaw.png
diff --git a/src/shapes/hi64-action-ksudoku-ksudoku_16x16.png b/src/shapes/64-actions-ksudoku-ksudoku_16x16.png
similarity index 100%
rename from src/shapes/hi64-action-ksudoku-ksudoku_16x16.png
rename to src/shapes/64-actions-ksudoku-ksudoku_16x16.png
diff --git a/src/shapes/hi64-action-ksudoku-ksudoku_25x25.png b/src/shapes/64-actions-ksudoku-ksudoku_25x25.png
similarity index 100%
rename from src/shapes/hi64-action-ksudoku-ksudoku_25x25.png
rename to src/shapes/64-actions-ksudoku-ksudoku_25x25.png
diff --git a/src/shapes/hi64-action-ksudoku-ksudoku_4x4.png b/src/shapes/64-actions-ksudoku-ksudoku_4x4.png
similarity index 100%
rename from src/shapes/hi64-action-ksudoku-ksudoku_4x4.png
rename to src/shapes/64-actions-ksudoku-ksudoku_4x4.png
diff --git a/src/shapes/hi64-action-ksudoku-ksudoku_9x9.png b/src/shapes/64-actions-ksudoku-ksudoku_9x9.png
similarity index 100%
rename from src/shapes/hi64-action-ksudoku-ksudoku_9x9.png
rename to src/shapes/64-actions-ksudoku-ksudoku_9x9.png
diff --git a/src/shapes/hi64-action-ksudoku-roxdoku_3x3x3.png b/src/shapes/64-actions-ksudoku-roxdoku_3x3x3.png
similarity index 100%
rename from src/shapes/hi64-action-ksudoku-roxdoku_3x3x3.png
rename to src/shapes/64-actions-ksudoku-roxdoku_3x3x3.png
diff --git a/src/shapes/hi64-action-ksudoku-roxdoku_4x4x4.png b/src/shapes/64-actions-ksudoku-roxdoku_4x4x4.png
similarity index 100%
rename from src/shapes/hi64-action-ksudoku-roxdoku_4x4x4.png
rename to src/shapes/64-actions-ksudoku-roxdoku_4x4x4.png
diff --git a/src/shapes/hi64-action-ksudoku-roxdoku_5x5x5.png b/src/shapes/64-actions-ksudoku-roxdoku_5x5x5.png
similarity index 100%
rename from src/shapes/hi64-action-ksudoku-roxdoku_5x5x5.png
rename to src/shapes/64-actions-ksudoku-roxdoku_5x5x5.png
diff --git a/src/shapes/hi64-action-ksudoku-samurai.png b/src/shapes/64-actions-ksudoku-samurai.png
similarity index 100%
rename from src/shapes/hi64-action-ksudoku-samurai.png
rename to src/shapes/64-actions-ksudoku-samurai.png
diff --git a/src/shapes/hi64-action-ksudoku-tiny_samurai.png b/src/shapes/64-actions-ksudoku-tiny_samurai.png
similarity index 100%
rename from src/shapes/hi64-action-ksudoku-tiny_samurai.png
rename to src/shapes/64-actions-ksudoku-tiny_samurai.png
diff --git a/src/shapes/hi64-action-ksudoku-xsudoku.png b/src/shapes/64-actions-ksudoku-xsudoku.png
similarity index 100%
rename from src/shapes/hi64-action-ksudoku-xsudoku.png
rename to src/shapes/64-actions-ksudoku-xsudoku.png
diff --git a/src/shapes/hi64-action-ksudoku.png b/src/shapes/64-actions-ksudoku.png
similarity index 100%
rename from src/shapes/hi64-action-ksudoku.png
rename to src/shapes/64-actions-ksudoku.png
diff --git a/src/shapes/CMakeLists.txt b/src/shapes/CMakeLists.txt
index 57babb7..17bfbc9 100644
--- a/src/shapes/CMakeLists.txt
+++ b/src/shapes/CMakeLists.txt
@@ -18,7 +18,82 @@ install( FILES
 	Mathdoku_Settable.desktop Mathdoku_Settable.xml
 	Killer_4x4.desktop Killer_4x4.xml
 	Killer_9x9.desktop Killer_9x9.xml
-	DESTINATION  ${DATA_INSTALL_DIR}/ksudoku
+	DESTINATION  ${KDE_INSTALL_DATADIR}/ksudoku
 )
 
-kde4_install_icons(${DATA_INSTALL_DIR}/ksudoku/icons)
+ecm_install_icons(ICONS
+    128-actions-ksudoku-jigsaw.png
+    128-actions-ksudoku-ksudoku_16x16.png
+    128-actions-ksudoku-ksudoku_25x25.png
+    128-actions-ksudoku-ksudoku_4x4.png
+    128-actions-ksudoku-ksudoku_9x9.png
+    128-actions-ksudoku-roxdoku_3x3x3.png
+    128-actions-ksudoku-roxdoku_4x4x4.png
+    128-actions-ksudoku-roxdoku_5x5x5.png
+    128-actions-ksudoku-samurai.png
+    128-actions-ksudoku-tiny_samurai.png
+    128-actions-ksudoku-xsudoku.png
+    128-actions-ksudoku.png
+    16-actions-ksudoku-jigsaw.png
+    16-actions-ksudoku-ksudoku_16x16.png
+    16-actions-ksudoku-ksudoku_25x25.png
+    16-actions-ksudoku-ksudoku_4x4.png
+    16-actions-ksudoku-ksudoku_9x9.png
+    16-actions-ksudoku-roxdoku_3x3x3.png
+    16-actions-ksudoku-roxdoku_4x4x4.png
+    16-actions-ksudoku-roxdoku_5x5x5.png
+    16-actions-ksudoku-samurai.png
+    16-actions-ksudoku-tiny_samurai.png
+    16-actions-ksudoku-xsudoku.png
+    16-actions-ksudoku.png
+    22-actions-ksudoku-jigsaw.png
+    22-actions-ksudoku-ksudoku_16x16.png
+    22-actions-ksudoku-ksudoku_25x25.png
+    22-actions-ksudoku-ksudoku_4x4.png
+    22-actions-ksudoku-ksudoku_9x9.png
+    22-actions-ksudoku-roxdoku_3x3x3.png
+    22-actions-ksudoku-roxdoku_4x4x4.png
+    22-actions-ksudoku-roxdoku_5x5x5.png
+    22-actions-ksudoku-samurai.png
+    22-actions-ksudoku-tiny_samurai.png
+    22-actions-ksudoku-xsudoku.png
+    22-actions-ksudoku.png
+    32-actions-ksudoku-jigsaw.png
+    32-actions-ksudoku-ksudoku_16x16.png
+    32-actions-ksudoku-ksudoku_25x25.png
+    32-actions-ksudoku-ksudoku_4x4.png
+    32-actions-ksudoku-ksudoku_9x9.png
+    32-actions-ksudoku-roxdoku_3x3x3.png
+    32-actions-ksudoku-roxdoku_4x4x4.png
+    32-actions-ksudoku-roxdoku_5x5x5.png
+    32-actions-ksudoku-samurai.png
+    32-actions-ksudoku-tiny_samurai.png
+    32-actions-ksudoku-xsudoku.png
+    32-actions-ksudoku.png
+    48-actions-ksudoku-jigsaw.png
+    48-actions-ksudoku-ksudoku_16x16.png
+    48-actions-ksudoku-ksudoku_25x25.png
+    48-actions-ksudoku-ksudoku_4x4.png
+    48-actions-ksudoku-ksudoku_9x9.png
+    48-actions-ksudoku-roxdoku_3x3x3.png
+    48-actions-ksudoku-roxdoku_4x4x4.png
+    48-actions-ksudoku-roxdoku_5x5x5.png
+    48-actions-ksudoku-samurai.png
+    48-actions-ksudoku-tiny_samurai.png
+    48-actions-ksudoku-xsudoku.png
+    48-actions-ksudoku.png
+    64-actions-ksudoku-jigsaw.png
+    64-actions-ksudoku-ksudoku_16x16.png
+    64-actions-ksudoku-ksudoku_25x25.png
+    64-actions-ksudoku-ksudoku_4x4.png
+    64-actions-ksudoku-ksudoku_9x9.png
+    64-actions-ksudoku-roxdoku_3x3x3.png
+    64-actions-ksudoku-roxdoku_4x4x4.png
+    64-actions-ksudoku-roxdoku_5x5x5.png
+    64-actions-ksudoku-samurai.png
+    64-actions-ksudoku-tiny_samurai.png
+    64-actions-ksudoku-xsudoku.png
+    64-actions-ksudoku.png
+    DESTINATION ${KDE_INSTALL_DATADIR}/ksudoku/icons
+    THEME hicolor
+)
diff --git a/src/themes/CMakeLists.txt b/src/themes/CMakeLists.txt
index 1a0ce0c..e28ad5e 100644
--- a/src/themes/CMakeLists.txt
+++ b/src/themes/CMakeLists.txt
@@ -1,4 +1,4 @@
 install(
 	FILES abstraction.svg abstraction.desktop ksudoku_scrible.svg ksudoku_scrible.desktop default.desktop ksudoku_egyptian.svg egyptian_preview.png scribble_preview.png abstraction_preview.png 
-	DESTINATION ${DATA_INSTALL_DIR}/ksudoku/themes
+	DESTINATION ${KDE_INSTALL_DATADIR}/ksudoku/themes
 )


More information about the kde-doc-english mailing list