Hello community,

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

Package is "bovo"

Changes:
--------
--- /work/SRC/openSUSE:Factory/bovo/bovo.changes        2015-03-11 
09:43:54.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.bovo.new/bovo.changes   2015-05-11 
17:25:23.000000000 +0200
@@ -1,0 +2,22 @@
+Sat Apr 11 12:39:53 UTC 2015 - [email protected]
+
+- 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:16:14 UTC 2015 - [email protected]
+
+- Update to KDE Applications 15.03.95
+   * KDE Applications 15.04 RC
+
+
+-------------------------------------------------------------------
+Sun Mar  8 12:34:35 UTC 2015 - [email protected]
+
+- Update to KDE Applications 15.03.80
+   * KDE Applications 15.04 Beta
+
+
+-------------------------------------------------------------------

Old:
----
  bovo-14.12.3.tar.xz

New:
----
  bovo-15.04.0.tar.xz

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

Other differences:
------------------
++++++ bovo.spec ++++++
--- /var/tmp/diff_new_pack.czluCe/_old  2015-05-11 17:25:24.000000000 +0200
+++ /var/tmp/diff_new_pack.czluCe/_new  2015-05-11 17:25:24.000000000 +0200
@@ -17,17 +17,32 @@
 
 
 Name:           bovo
+BuildRequires:  extra-cmake-modules
+BuildRequires:  kconfig-devel
+BuildRequires:  kcoreaddons-devel
+BuildRequires:  kdeclarative-devel
+BuildRequires:  kdelibs4support-devel
+BuildRequires:  knewstuff-devel
+BuildRequires:  kxmlgui-devel
 BuildRequires:  libkdegames-devel
 BuildRequires:  xz
+BuildRequires:  pkgconfig(Qt5Concurrent)
+BuildRequires:  pkgconfig(Qt5Core)
+BuildRequires:  pkgconfig(Qt5Qml)
+BuildRequires:  pkgconfig(Qt5Quick)
+BuildRequires:  pkgconfig(Qt5QuickWidgets)
+BuildRequires:  pkgconfig(Qt5Svg)
+BuildRequires:  pkgconfig(Qt5Widgets)
 Summary:        Five-in-a-row Board Game
 License:        GPL-2.0+
 Group:          Amusements/Games/Board/Other
 Url:            http://www.kde.org
-Version:        14.12.3
+Version:        15.04.0
 Release:        0
 Source0:        bovo-%{version}.tar.xz
+Obsoletes:      %{name}5 < %{version}
+Provides:       %{name}5 = %{version}
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
-%kde4_runtime_requires
 
 %description
 Bovo is a Gomoku (Connect Five, Five in a row, X and O, etc) game for
@@ -38,13 +53,11 @@
 %setup -q -n bovo-%{version}
 
 %build
-  %cmake_kde4 -d build
+  %cmake_kf5 -d build
   %make_jobs
 
 %install
-  cd build
-  %makeinstall
-  %kde_post_install
+  %kf5_makeinstall -C build
 
 %post -p /sbin/ldconfig
 
@@ -55,12 +68,12 @@
 
 %files
 %defattr(-,root,root)
-%_kde4_iconsdir/hicolor/*/apps/bovo.*
-%{_kde4_appsdir}/bovo/
-%{_kde4_htmldir}/en/bovo/
-%{_kde4_applicationsdir}/bovo.desktop
-%{_kde4_bindir}/bovo
-%dir %{_kde4_appsdir}/appdata
-%{_kde4_appsdir}/appdata/bovo.appdata.xml
+%{_kf5_iconsdir}/hicolor/*/apps/bovo.*
+%{_kf5_sharedir}/bovo/
+%{_kf5_htmldir}/en/bovo/
+%{_kf5_applicationsdir}/org.kde.bovo.desktop
+%{_kf5_bindir}/bovo
+%{_kf5_sharedir}/appdata/
+%{_kf5_sharedir}/kxmlgui5/
 
 %changelog

++++++ bovo-14.12.3.tar.xz -> bovo-15.04.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bovo-14.12.3/CMakeLists.txt 
new/bovo-15.04.0/CMakeLists.txt
--- old/bovo-14.12.3/CMakeLists.txt     2015-02-21 07:40:21.000000000 +0100
+++ new/bovo-15.04.0/CMakeLists.txt     2015-03-25 13:19:01.000000000 +0100
@@ -1,25 +1,30 @@
 project (BOVO)
 
-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.2.0")
 
-KDE4_NO_ENABLE_FINAL(bovo)
+find_package(ECM 1.3.0 REQUIRED CONFIG)
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} 
${ECM_KDE_MODULE_DIR})
 
-# re-enabling exceptions (turned off in KDE)
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${KDE4_ENABLE_EXCEPTIONS}")
+find_package(Qt5 ${QT_MIN_VERSION} REQUIRED NO_MODULE COMPONENTS Widgets Svg 
Concurrent Qml Quick QuickWidgets)
+find_package(KF5 REQUIRED COMPONENTS 
+           CoreAddons
+           XmlGui
+            NewStuff
+            Declarative
+           )
+find_package(KF5KDEGames 4.9.0 REQUIRED)
+
+include(KDEInstallDirs)
+include(KDECMakeSettings)
+include(KDECompilerSettings)
+include(FeatureSummary)
+include(KDECoreMacros)
+include(ECMInstallIcons)
 
-include_directories (
-       ${BOVO_SOURCE_DIR}/gui ${CMAKE_BINARY_DIR}/gui
-       ${BOVO_SOURCE_DIR}/game ${BOVO_SOURCE_DIR}/ai
-)
+# re-enabling exceptions (turned off in KDE)
+kde_enable_exceptions()
+#add_definitions("-DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII")
 
 set( bovogame_SRCS
        game/game.cc
@@ -57,17 +62,25 @@
        ${bovogame_SRCS}
 )
 
-kde4_add_kcfg_files(bovo_SRCS gui/settings.kcfgc)
-kde4_add_app_icon(bovo_SRCS 
"${CMAKE_CURRENT_SOURCE_DIR}/icons/hi*-app-bovo.png")
-kde4_add_executable(bovo ${bovo_SRCS})
+include_directories(
+       ${CMAKE_SOURCE_DIR}/game
+       ${CMAKE_SOURCE_DIR}/gui
+       ${CMAKE_SOURCE_DIR}/ai
+       ${Qt5Concurrent_INCLUDE_DIRS}
+       )
+
+kconfig_add_kcfg_files(bovo_SRCS gui/settings.kcfgc)
+#kde4_add_app_icon(bovo_SRCS 
"${CMAKE_CURRENT_SOURCE_DIR}/icons/hi*-app-bovo.png")
+add_executable(bovo ${bovo_SRCS})
 
-target_link_libraries(bovo kdegames ${KDE4_KDEUI_LIBS} )
+target_link_libraries(bovo KF5::XmlGui KF5::I18n KF5::IconThemes Qt5::Svg 
KF5KDEGames KF5::DBusAddons)
 
 add_subdirectory (themes)
 add_subdirectory (icons)
 add_subdirectory (doc)
 
 install (TARGETS bovo ${INSTALL_TARGETS_DEFAULT_ARGS})
-install (FILES gui/bovoui.rc  DESTINATION  ${DATA_INSTALL_DIR}/bovo)
-install (PROGRAMS bovo.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})
+install (FILES gui/bovoui.rc  DESTINATION  ${KXMLGUI_INSTALL_DIR}/bovo)
+install (PROGRAMS org.kde.bovo.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})
 install (FILES bovo.appdata.xml DESTINATION  ${DATA_INSTALL_DIR}/appdata)
+feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES 
FATAL_ON_MISSING_REQUIRED_PACKAGES)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bovo-14.12.3/ai/ai.cc new/bovo-15.04.0/ai/ai.cc
--- old/bovo-14.12.3/ai/ai.cc   2015-02-21 07:40:21.000000000 +0100
+++ new/bovo-15.04.0/ai/ai.cc   2015-03-25 13:19:01.000000000 +0100
@@ -37,4 +37,4 @@
 
 } /* namespace ai */
 
-#include "ai.moc"
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bovo-14.12.3/ai/aifactory.cc 
new/bovo-15.04.0/ai/aifactory.cc
--- old/bovo-14.12.3/ai/aifactory.cc    2015-02-21 07:40:21.000000000 +0100
+++ new/bovo-15.04.0/ai/aifactory.cc    2015-03-25 13:19:01.000000000 +0100
@@ -34,8 +34,8 @@
 namespace ai {
 
 AiFactory::AiFactory() {
-    m_aiList.append("Gabor");
-    m_aiList.append("Aron");
+    m_aiList.append(QStringLiteral("Gabor"));
+    m_aiList.append(QStringLiteral("Aron"));
     m_ai = 0;
 }
 
@@ -74,4 +74,4 @@
 
 } /* namespace ai */
 
-#include "aifactory.moc"
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bovo-14.12.3/ai/aron/aiaron.cc 
new/bovo-15.04.0/ai/aron/aiaron.cc
--- old/bovo-14.12.3/ai/aron/aiaron.cc  2015-02-21 07:40:21.000000000 +0100
+++ new/bovo-15.04.0/ai/aron/aiaron.cc  2015-03-25 13:19:01.000000000 +0100
@@ -69,4 +69,4 @@
 
 } /* namespace ai */
 
-#include "aiaron.moc"
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bovo-14.12.3/ai/aron/aiaron.h 
new/bovo-15.04.0/ai/aron/aiaron.h
--- old/bovo-14.12.3/ai/aron/aiaron.h   2015-02-21 07:40:21.000000000 +0100
+++ new/bovo-15.04.0/ai/aron/aiaron.h   2015-03-25 13:19:01.000000000 +0100
@@ -27,7 +27,6 @@
 #ifndef BOVO_AIARON_H
 #define BOVO_AIARON_H
 
-#include <QObject>
 
 #include "../ai.h"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bovo-14.12.3/ai/aron/aiboard.cc 
new/bovo-15.04.0/ai/aron/aiboard.cc
--- old/bovo-14.12.3/ai/aron/aiboard.cc 2015-02-21 07:40:21.000000000 +0100
+++ new/bovo-15.04.0/ai/aron/aiboard.cc 2015-03-25 13:19:01.000000000 +0100
@@ -140,10 +140,10 @@
 /* secret helper functions */
 
 Coord next(const Coord& c, usi dir) {
-    usi LEFT = 1;
-    usi UP = 2;
-    usi RIGHT = 4;
-    usi DOWN = 8;
+    const usi LEFT = 1;
+    const usi UP = 2;
+    const usi RIGHT = 4;
+    const usi DOWN = 8;
     Coord tmp = c;
     if (dir & LEFT) {
         tmp = tmp.left();
@@ -438,10 +438,10 @@
 }
 
 bool AiBoard::win(const Coord& c) const {
-    usi LEFT = 1;
-    usi UP = 2;
-    usi RIGHT = 4;
-    usi DOWN = 8;
+    const usi LEFT = 1;
+    const usi UP = 2;
+    const usi RIGHT = 4;
+    const usi DOWN = 8;
     usi DIR[8] = {
           LEFT,
           RIGHT,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bovo-14.12.3/ai/gabor/aigabor.cc 
new/bovo-15.04.0/ai/gabor/aigabor.cc
--- old/bovo-14.12.3/ai/gabor/aigabor.cc        2015-02-21 07:40:21.000000000 
+0100
+++ new/bovo-15.04.0/ai/gabor/aigabor.cc        2015-03-25 13:19:01.000000000 
+0100
@@ -24,10 +24,8 @@
  * @file aigabor.cc implementing the AiGabor class
  */
 
-#include <QMetaType>
 #include <QTime>
-#include <QtConcurrentRun>
-
+#include <QtConcurrent>
 #include "aigabor.h"
 
 #include "coord.h"
@@ -118,4 +116,4 @@
 
 } /* namespace ai */
 
-#include "aigabor.moc"
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bovo-14.12.3/ai/gabor/aigabor.h 
new/bovo-15.04.0/ai/gabor/aigabor.h
--- old/bovo-14.12.3/ai/gabor/aigabor.h 2015-02-21 07:40:21.000000000 +0100
+++ new/bovo-15.04.0/ai/gabor/aigabor.h 2015-03-25 13:19:01.000000000 +0100
@@ -27,7 +27,6 @@
 #ifndef BOVO_AIGABOR_H
 #define BOVO_AIGABOR_H
 
-#include <QObject>
 #include <QFuture>
 
 #include "../ai.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bovo-14.12.3/bovo.appdata.xml 
new/bovo-15.04.0/bovo.appdata.xml
--- old/bovo-14.12.3/bovo.appdata.xml   2015-02-21 07:40:21.000000000 +0100
+++ new/bovo-15.04.0/bovo.appdata.xml   2015-03-25 13:19:01.000000000 +0100
@@ -1,9 +1,10 @@
 <?xml version="1.0" encoding="utf-8"?>
 <component type="desktop">
-  <id>bovo.desktop</id>
+  <id>org.kde.bovo.desktop</id>
   <metadata_license>CC0-1.0</metadata_license>
   <project_license>GPL-2.0+</project_license>
   <name>Bovo</name>
+  <name xml:lang="ast">Bovo</name>
   <name xml:lang="bs">Bovo</name>
   <name xml:lang="ca">Bovo</name>
   <name xml:lang="cs">Bovo</name>
@@ -13,12 +14,14 @@
   <name xml:lang="es">Bovo</name>
   <name xml:lang="fi">Bovo</name>
   <name xml:lang="fr">Bovo</name>
+  <name xml:lang="gl">Bovo</name>
   <name xml:lang="it">Bovo</name>
   <name xml:lang="nds">Bovo</name>
   <name xml:lang="nl">Bovo</name>
   <name xml:lang="pl">Bovo</name>
   <name xml:lang="pt">Bovo</name>
   <name xml:lang="pt-BR">Bovo</name>
+  <name xml:lang="ru">Bovo</name>
   <name xml:lang="sk">Bovo</name>
   <name xml:lang="sl">Bovo</name>
   <name xml:lang="sr">Бово</name>
@@ -28,6 +31,7 @@
   <name xml:lang="sv">Bovo</name>
   <name xml:lang="uk">Bovo</name>
   <name xml:lang="x-test">xxBovoxx</name>
+  <name xml:lang="zh-CN">Bovo</name>
   <name xml:lang="zh-TW">五子棋_Bovo</name>
   <description>
     <p>
@@ -42,12 +46,14 @@
     <p xml:lang="es">Bovo es un juego parecido al Gomoku (del japonés 五目並べ - 
lit. "cinco puntos") para dos jugadores, donde los oponentes se van alternando 
en colocar sus pictogramas respectivos en el tablero de juego. (También 
conocido como: conecta cinco, cinco en fila, X y O)</p>
     <p xml:lang="fi">Bovo on Gomokun (japaniksi 五目並べ – kirjaimellisesti ”viisi 
pistettä”) kaltainen peli kahdelle, jossa vastustajat asettavat vuorotellen 
merkkinsä pelilaudalle. Tunnetaan myös nimillä viiden suora ja ristinolla.</p>
     <p xml:lang="fr">Bovo est un jeu pour deux joueurs inspiré du Gomoku (du 
japonais 五目並べ signifiant « cinq points »). Les adversaires placent chacun à 
leur tour leurs symboles sur la tableau de jeu. Également connu sous le nom de 
« cinq en ligne », « X et O », « morpion ».</p>
+    <p xml:lang="gl">Bovo é un xogo para dous xogadores similar ao Gomoku (do 
xaponés 五目並べ, «cinco puntos»), no que os opoñentes sitúan os seus pictogramas 
no taboleiro por quendas. O xogo tamén se coñece como «Conectar cinco», «Cinco 
en liña», etc.</p>
     <p xml:lang="it">Bovo è un gioco per due giocatori simile al Gomoku (dal 
giapponese 五目並べ - lett. «cinque punti»), in cui i contendenti si alternano nel 
piazzare i propri pittogrammi sul piano di gioco. (È noto anche come: Connect 
Five, Five in a row, X and O, Naughts and Crosses)</p>
     <p xml:lang="nds">Bovo is en Speel as Gomoku (ut japaansch 五目並べ“ - „fief 
Pünkt“) för twee Spelers. De Twee wesselt sik af un leggt ehr Piktogramm op't 
Speelbrett. (Warrt ok „Fief verbinnen“, „Fief in de Reeg“, „X un O“ oder „Nixen 
un Nullen“ nöömt.)</p>
     <p xml:lang="nl">Bovo is een Gomoku (uit het Japans 五目並べ - letterlijk 
"vijf punten")-achtig spel voor twee spelers, waar de opponenten afwisselen in 
het plaatsen van hun respectievelijke pictogram op het spelbord. (Ook bekend 
als: Boter-Kaas-en-Eieren, Vijf verbinden, Vijf op een rij, X en O, Naughts and 
Crosses)</p>
     <p xml:lang="pl">Bovo to gra dla dwóch graczy w rodzaju Gomoku (z 
japońskiego 五目並べ - lit. "pięć punktów"), gdzie gracze na zmianę umieszczają 
odpowiadające im piktogramy na planszy. (Gra znana również jako: Połącz piątkę, 
Piątka w rzędzie, X i O, Kółko i krzyżyk)</p>
     <p xml:lang="pt">O Bovo é um jogo semelhante ao Gomoku (do Japonês 五目並べ - 
lit. "cinco pontos") para dois jogadores, onde os adversários vão colocando o 
seu pictograma respectivo no tabuleiro do jogo. (Também conhecido como: Liga 
Cinco, Cinco em Linha, X e O, Bolas e Cruzes)</p>
     <p xml:lang="pt-BR">Bovo é um jogo do tipo Gomoku (do Japonês 五目並べ - lit. 
"cinco pontos") para dois jogadores, onde os adversários alternam na colocação 
das suas marcas respectivas no tabuleiro. (Também conhecido como: Conectar 
Cinco, Cinco-em-Linha, X e O, Bolas e Cruzes)</p>
+    <p xml:lang="ru">Bovo — игра для двух игроков, произошедшая от Гомоку (в 
переводе с японского 五目並べ — «пять точек»). Соперники по очереди ставят свою 
отметку на игровой доске. Другие названия: крестики-нолики, пять в ряд.</p>
     <p xml:lang="sk">Bovo je Gomoku (z japonského 五目並べ - "päť bodov") hra pre 
dvoch hráčov, kde protivníci sa striedajú v umiestňovaní ich piktogramov na 
hraciu plochu. (Známe aj ako: Connect Five, Päť v rade, X a O, Naughts and 
Crosses)</p>
     <p xml:lang="sl">Bovo je igra podobna Gomoku (iz japonskega 五目並べ - lit. 
"pet točk") za dva igralca, ki izmenično postavljata njun piktogram na igralno 
ploščo. Igra je znana tudi kot: Poveži pet, Pet v vrsto, Križci in krogci.</p>
     <p xml:lang="sr">Бово је игра налик на гомоку (од јапанског 五目並べ, буквално 
„пет тачака“) за два играча, где противници наизменично смештају свој пиктограм 
на играчку таблу. Проширена верзија икс‑окса.</p>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bovo-14.12.3/bovo.desktop 
new/bovo-15.04.0/bovo.desktop
--- old/bovo-14.12.3/bovo.desktop       2015-02-21 07:40:21.000000000 +0100
+++ new/bovo-15.04.0/bovo.desktop       1970-01-01 01:00:00.000000000 +0100
@@ -1,122 +0,0 @@
-[Desktop Entry]
-Exec=bovo -caption %c
-Name=Bovo
-Name[ast]=Bovo
-Name[bs]=Bovo
-Name[ca]=Bovo
-Name[ca@valencia]=Bovo
-Name[cs]=Bovo
-Name[da]=Bovo
-Name[de]=Bovo
-Name[el]=Bovo
-Name[en_GB]=Bovo
-Name[eo]=Bovo
-Name[es]=Bovo
-Name[et]=Bovo
-Name[eu]=Bovo
-Name[fa]=بُوُ
-Name[fi]=Bovo
-Name[fr]=Bovo
-Name[ga]=Bovo
-Name[gl]=Bovo
-Name[hne]=बोवो
-Name[hr]=Bovo
-Name[hu]=Bovo
-Name[it]=Bovo
-Name[ja]=Bovo
-Name[kk]=Бово
-Name[km]=Bovo
-Name[ko]=Bovo
-Name[lt]=Bovo
-Name[lv]=Bovo
-Name[mai]=Bovo
-Name[mr]=बोव्हो
-Name[ms]=Bovo
-Name[nb]=Bovo
-Name[nds]=Bovo
-Name[ne]=बोभो
-Name[nl]=Bovo
-Name[nn]=Bovo
-Name[pa]=ਬੋਵੋ
-Name[pl]=Bovo
-Name[pt]=Bovo
-Name[pt_BR]=Bovo
-Name[ro]=Bovo
-Name[ru]=Bovo
-Name[sk]=Bovo
-Name[sl]=Bovo
-Name[sq]=Bovo
-Name[sr]=Бово
-Name[sr@ijekavian]=Бово
-Name[sr@ijekavianlatin]=Bovo
-Name[sr@latin]=Bovo
-Name[sv]=Bovo
-Name[te]=బొవొ
-Name[tr]=Bovo
-Name[ug]=Bovo
-Name[uk]=Бово
-Name[wa]=Bovo
-Name[x-test]=xxBovoxx
-Name[zh_CN]=Bovo
-Name[zh_TW]=Bovo
-Icon=bovo
-Type=Application
-X-DocPath=bovo/index.html
-GenericName=Five-in-a-row Board Game
-GenericName[ast]=Xuegu de tableru cinco en llinia
-GenericName[bs]=Pet-u-redu Igra na ploči
-GenericName[ca]=Joc de cinc en fila
-GenericName[ca@valencia]=Joc de cinc en fila
-GenericName[cs]=Desková hra "pět v řadě"
-GenericName[da]=Fem-på-række-brætspil
-GenericName[de]=Fünf-Gewinnt-Brettspiel
-GenericName[el]=Επιτραπέζιο παιχνίδι Πέντε στη σειρά
-GenericName[en_GB]=Five-in-a-row Board Game
-GenericName[eo]=Gobanga bretludo
-GenericName[es]=Juego de tablero de cinco en línea
-GenericName[et]=Viis ritta lauamäng
-GenericName[eu]=Bostko artzain-jokoa
-GenericName[fa]=بازی تخته پنج در یک سطر
-GenericName[fi]=Viiden suora
-GenericName[fr]=Jeu de plateau « Cinq-en-ligne »
-GenericName[ga]=Cluiche cláir cúig-cinn-as-a-chéile
-GenericName[gl]=Xogo de taboleiro «pai, fillo e nai»
-GenericName[hne]=बोर्ड मं एक लकीर मं पांच वाले खेल
-GenericName[hu]=Ötöt egy sorba táblajáték
-GenericName[is]=Fimm-í-röð borðleikur
-GenericName[it]=Forza 5, gioco da tavolo
-GenericName[ja]=五目並べ
-GenericName[kk]="Бесеуін - қатарға" ойны
-GenericName[km]=ល្បែង​ក្ដារ ប្រាំ​ក្នុង​មួយ​ជួរ
-GenericName[ko]=오목 게임
-GenericName[lt]=Penki-vienoje-eilutėje stalo žaidimas
-GenericName[lv]=Galda spēle pieci-rindā
-GenericName[mr]=एका-ओळीत-पाच बोर्ड खेळ
-GenericName[nb]=Brettspill fem på rad
-GenericName[nds]="Fief op de Reeg"-Speel
-GenericName[ne]=एक पङ्क्तिमा पाँच बोर्ड खेल
-GenericName[nl]=Vijf-op-een-rij bordspel
-GenericName[nn]=Fem på rad
-GenericName[pl]=Gra planszowa "Pięć w rzędzie"
-GenericName[pt]=Jogo de Tabuleiro Cinco-em-Linha
-GenericName[pt_BR]=Jogo de tabuleiro como Reversi
-GenericName[ro]=Joc de table Cinci-în-linie
-GenericName[ru]=Японские крестики-нолики
-GenericName[sk]=Stolová hra Piškvorky
-GenericName[sl]=Namizna igra Pet v vrsto
-GenericName[sr]=Игра на табли „пет у низу“
-GenericName[sr@ijekavian]=Игра на табли „пет у низу“
-GenericName[sr@ijekavianlatin]=Igra na tabli „pet u nizu“
-GenericName[sr@latin]=Igra na tabli „pet u nizu“
-GenericName[sv]=Fem-i-rad brädspel
-GenericName[tr]=Bir-satırda-beş Tahta Oyunu
-GenericName[ug]=بىر-قۇردا-بەش تاختا ئويۇنى
-GenericName[uk]=Гра на дошці (п'ять-в-рядку)
-GenericName[wa]=Djeu «cénk e roye»
-GenericName[x-test]=xxFive-in-a-row Board Gamexx
-GenericName[zh_CN]=五子棋游戏
-GenericName[zh_TW]=五子棋棋盤遊戲
-Terminal=false
-X-KDE-StartupNotify=true
-X-DBUS-StartupType=Multi
-Categories=Qt;KDE;Game;BoardGame;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bovo-14.12.3/doc/CMakeLists.txt 
new/bovo-15.04.0/doc/CMakeLists.txt
--- old/bovo-14.12.3/doc/CMakeLists.txt 2015-02-21 07:40:21.000000000 +0100
+++ new/bovo-15.04.0/doc/CMakeLists.txt 2015-03-25 13:19:01.000000000 +0100
@@ -1,2 +1,2 @@
-kde4_create_handbook(index.docbook INSTALL_DESTINATION ${HTML_INSTALL_DIR}/en 
SUBDIR bovo)
+kdoctools_create_handbook(index.docbook INSTALL_DESTINATION 
${HTML_INSTALL_DIR}/en SUBDIR bovo)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bovo-14.12.3/doc/index.docbook 
new/bovo-15.04.0/doc/index.docbook
--- old/bovo-14.12.3/doc/index.docbook  2015-02-21 07:40:21.000000000 +0100
+++ new/bovo-15.04.0/doc/index.docbook  2015-03-25 13:19:01.000000000 +0100
@@ -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 kappname "&bovo;">
   <!ENTITY kappversion "1.0"><!--Applicaion version. Use this variable 
everywhere it's needed.-->
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bovo-14.12.3/game/game.cc 
new/bovo-15.04.0/game/game.cc
--- old/bovo-14.12.3/game/game.cc       2015-02-21 07:40:21.000000000 +0100
+++ new/bovo-15.04.0/game/game.cc       2015-03-25 13:19:01.000000000 +0100
@@ -339,10 +339,10 @@
 }
 
 Coord Game::next(const Coord& coord, usi dir) const {
-    usi LEFT = 1;
-    usi UP = 2;
-    usi RIGHT = 4;
-    usi DOWN = 8;
+    const usi LEFT = 1;
+    const usi UP = 2;
+    const usi RIGHT = 4;
+    const usi DOWN = 8;
     Coord tmp = coord;
     if (dir & LEFT) {
         tmp = tmp.left();
@@ -358,10 +358,10 @@
 }
 
 short Game::win(const Coord& c) const {
-    usi LEFT = 1;
-    usi UP = 2;
-    usi RIGHT = 4;
-    usi DOWN = 8;
+    const usi LEFT = 1;
+    const usi UP = 2;
+    const usi RIGHT = 4;
+    const usi DOWN = 8;
     usi DIR[8] = {LEFT, RIGHT, UP, DOWN, LEFT | UP, RIGHT | DOWN,
                   LEFT | DOWN, RIGHT | UP};
     Player p = player(c);
@@ -417,4 +417,4 @@
 
 }
 
-#include "game.moc"
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bovo-14.12.3/game/test/CMakeLists.txt 
new/bovo-15.04.0/game/test/CMakeLists.txt
--- old/bovo-14.12.3/game/test/CMakeLists.txt   2015-02-21 07:40:21.000000000 
+0100
+++ new/bovo-15.04.0/game/test/CMakeLists.txt   2015-03-25 13:19:01.000000000 
+0100
@@ -1,3 +1,3 @@
-kde4_add_executable (testbovo test.cpp)
+add_executable (testbovo test.cpp)
 target_link_library (testbovo game)
 install (TARGETS testbovo ${INSTALL_TARGETS_DEFAULT_ARGS})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bovo-14.12.3/gui/hintitem.cc 
new/bovo-15.04.0/gui/hintitem.cc
--- old/bovo-14.12.3/gui/hintitem.cc    2015-02-21 07:40:21.000000000 +0100
+++ new/bovo-15.04.0/gui/hintitem.cc    2015-03-25 13:19:01.000000000 +0100
@@ -39,7 +39,7 @@
   : QGraphicsSvgItem(), m_scene(scene), m_row(hint.y()),
   m_col(hint.x()), m_fill(fill) {
     m_sizeShrink = 1.0/(qrand()%5+7.0);
-    setElementId(QString(hint.player() == X ? "x%1" : "o%1")
+    setElementId(QString(hint.player() == X ? QLatin1String("x%1") : 
QLatin1String("o%1"))
             .arg(QString::number(qrand() % 5 + 1)));
     m_tick = 16;
     m_tickUp = true;
@@ -47,7 +47,7 @@
     if (animate) {
         m_ticker = new QTimer(this);
         m_opacity = 0.0;
-        connect(m_ticker, SIGNAL(timeout()), this, SLOT(tick()));
+        connect(m_ticker, &QTimer::timeout, this, &HintItem::tick);
         m_ticker->start(30);
     } else {
         m_opacity = 0.4;
@@ -85,7 +85,7 @@
 }
 
 void HintItem::kill() {
-    connect(m_ticker, SIGNAL(timeout()), this, SLOT(killTick()));
+    connect(m_ticker, &QTimer::timeout, this, &HintItem::killTick);
     m_ticker->start();
 }
 
@@ -130,4 +130,4 @@
 
 } /* namespace gui */
 
-#include "hintitem.moc"
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bovo-14.12.3/gui/main.cc new/bovo-15.04.0/gui/main.cc
--- old/bovo-14.12.3/gui/main.cc        2015-02-21 07:40:21.000000000 +0100
+++ new/bovo-15.04.0/gui/main.cc        2015-03-25 13:19:01.000000000 +0100
@@ -19,36 +19,56 @@
 *
 ********************************************************************/
 
-#include <kapplication.h>
-#include <kcmdlineargs.h>
+#include <QApplication>
+#include <QCommandLineParser>
 #include <kaboutdata.h>
-#include <klocale.h>
+#include <kdelibs4configmigrator.h>
+#include <klocalizedstring.h>
+#include <KDBusService>
 
 #include "mainwindow.h"
 #include "version.h"
 
 static const char description[] = I18N_NOOP("KDE Five in a Row Board Game");
+static const char copyleft[] = I18N_NOOP("(c) 2002-2007, Aron Boström");
 
 using namespace gui;
 
 int main(int argc, char **argv) {
-    KAboutData aboutData("bovo", 0, ki18n("Bovo"),
-            BOVO_VERSION, ki18n(description), KAboutData::License_GPL,
-            ki18n("(c) 2002,2007 Aron Boström"), KLocalizedString(), 
"http://games.kde.org/bovo"; );
-    aboutData.addAuthor(ki18n("Aron Boström"),ki18n("Author"),
-                        "[email protected]");
 
-    KCmdLineArgs::init(argc, argv, &aboutData);
-
-    KApplication application;
-    KGlobal::locale()->insertCatalog( QLatin1String( "libkdegames" ));
-
-    if( application.isSessionRestored() ) {
+    Kdelibs4ConfigMigrator migrate(QStringLiteral("bovo"));
+    migrate.setConfigFiles(QStringList() << QStringLiteral("bovorc"));
+    migrate.setUiFiles(QStringList() << QStringLiteral("bovoui.rc"));
+    migrate.migrate();
+
+    QApplication app(argc, argv);
+    KLocalizedString::setApplicationDomain("bovo");
+
+    KAboutData aboutData(QStringLiteral("bovo"), i18n("Bovo"),
+            QStringLiteral(BOVO_VERSION), i18n(description), 
KAboutLicense::GPL,
+            i18n(copyleft), QString(), 
QStringLiteral("http://games.kde.org/bovo";));
+    aboutData.addAuthor(i18n("Aron Boström"),i18n("Author"),
+                        QStringLiteral("[email protected]"));
+
+    aboutData.setOrganizationDomain(QByteArray("kde.org"));
+    app.setWindowIcon(QIcon::fromTheme(QStringLiteral("bovo")));
+    aboutData.setProductName(QByteArray("bovo"));
+           
+    KAboutData::setApplicationData(aboutData);
+
+    QCommandLineParser parser;
+    parser.addVersionOption();
+    parser.addHelpOption();
+    aboutData.setupCommandLine(&parser);
+    parser.process(app);
+    aboutData.processCommandLine(&parser);
+    KDBusService service;           
+    if( app.isSessionRestored() ) {
         RESTORE(MainWindow);
     } else {
         MainWindow *mainWin = new MainWindow();
         mainWin->show();
     }
 
-    return application.exec();
+    return app.exec();
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bovo-14.12.3/gui/mainwindow.cc 
new/bovo-15.04.0/gui/mainwindow.cc
--- old/bovo-14.12.3/gui/mainwindow.cc  2015-02-21 07:40:21.000000000 +0100
+++ new/bovo-15.04.0/gui/mainwindow.cc  2015-03-25 13:19:01.000000000 +0100
@@ -26,21 +26,21 @@
 #include <QWidget>
 #include <QTimer>
 #include <QBrush>
+#include <QDir>
+#include <QLabel>
+#include <QIcon>
 
 // KDE includes
-#include <kaction.h>
 #include <kactioncollection.h>
 #include <kconfig.h>
 #include <kconfiggroup.h>
 #include <kgdifficulty.h>
-#include <kstatusbar.h>
+#include <qstatusbar.h>
 #include <kstandardgameaction.h>
-#include <kstandarddirs.h>
 #include <kselectaction.h>
 #include <ktoggleaction.h>
-#include <klocale.h>
-#include <kicon.h>
 #include <kiconloader.h>
+#include <klocalizedstring.h>
 
 // Bovo includes
 #include "ai.h"
@@ -64,11 +64,12 @@
 MainWindow::MainWindow(QWidget* parent)
   : KXmlGuiWindow(parent), m_scene(0), m_game(0), m_wins(0),
   m_losses(0), m_computerStarts(false), m_demoAi(0),
-  m_aiFactory(0), m_animate(true) {
-    statusBar()->insertItem("            ", 0, 10);
-    statusBar()->setItemAlignment(0, Qt::AlignLeft);
-    statusBar()->insertPermanentItem(i18n("Wins: %1", m_wins), 1);
-    statusBar()->insertPermanentItem(i18n("Losses: %1", m_losses), 2, 1);
+  m_aiFactory(0), m_animate(true),
+  m_winsLabel (new QLabel(i18n("Wins: %1", m_wins))),
+  m_lossesLabel (new QLabel(i18n("Losses: %1", m_losses))) {
+    statusBar()->showMessage(QStringLiteral("            "));
+    statusBar()->insertPermanentWidget(0, m_winsLabel);
+    statusBar()->insertPermanentWidget(1, m_lossesLabel);
 
     m_aiFactory = new AiFactory();
     KgDifficulty* diff = Kg::difficulty();
@@ -104,7 +105,7 @@
 void MainWindow::save() const {
     if (m_game != 0) {
         m_scene->activate(false);
-        QString rc = KGlobal::dirs()->locate("config", "bovorc");
+        QString rc = QStandardPaths::locate(QStandardPaths::ConfigLocation, 
QStringLiteral("bovorc"));
         KConfig savegame(rc);
         KConfigGroup lastGroup(&savegame, "Game");
         if (!m_game->isGameOver() && m_game->demoMode() == NotDemo) {
@@ -119,8 +120,17 @@
 }
 
 void MainWindow::setupThemes() {
-    QStringList themercs = KGlobal::dirs()->findAllResources("appdata",
-                           "themes/*/themerc");
+    QStringList themercs;
+    const QStringList themeDirs = 
QStandardPaths::locateAll(QStandardPaths::DataLocation, 
QStringLiteral("themes"), QStandardPaths::LocateDirectory);
+    Q_FOREACH (const QString &themeDir, themeDirs) {
+       const QStringList entries = QDir(themeDir).entryList(QDir::Dirs);
+        Q_FOREACH(const QString &d, entries) {
+            QString themeFile = themeDir + QLatin1Char('/') + d + 
QLatin1String("/themerc");
+           if (QFile::exists(themeFile))
+               themercs.append(themeFile);
+        }
+    }
+
     int i = 0;
     foreach (const QString &themerc, themercs) {
         KConfig config(themerc);
@@ -144,7 +154,7 @@
     m_animate       = Settings::animation();
     m_aiFactory->changeAi(Settings::ai());
 
-    const QString rc = KGlobal::dirs()->locate("config", "bovorc");
+    const QString rc = QStandardPaths::locate(QStandardPaths::ConfigLocation, 
QStringLiteral("bovorc"));
     KConfig savegame(rc);
     KConfigGroup lastGroup(&savegame, "Game");
     m_lastGame = lastGroup.readXdgListEntry("Unfinished", QStringList()); // 
XXX this is bogus
@@ -166,16 +176,16 @@
     Settings::setPlaybackSpeed(m_playbackSpeed);
     Settings::setAnimation(m_animate);
     Settings::setAi(m_aiFactory->ai());
-    Settings::self()->writeConfig();
+    Settings::self()->save();
 }
 
 void MainWindow::setupActions() {
     KStandardGameAction::gameNew(this, SLOT(slotNewGame()), 
actionCollection());
     KStandardGameAction::quit(this, SLOT(close()), actionCollection());
 
-    QAction *replayAct = new KAction(KIcon( QLatin1String( 
"media-playback-start" )),
+    QAction *replayAct = new QAction(QIcon::fromTheme( QStringLiteral( 
"media-playback-start" )),
                             i18n("&Replay"), this);
-    actionCollection()->addAction( QLatin1String( "replay" ), replayAct);
+    actionCollection()->addAction( QStringLiteral( "replay" ), replayAct);
     replayAct->setToolTip(i18n("Replay game"));
     replayAct->setWhatsThis(i18n("Replays your last game for you to watch."));
     replayAct->setEnabled(false);
@@ -184,7 +194,7 @@
     m_hintAct->setEnabled(false);
 
     KToggleAction *animAct = new KToggleAction(i18n("&Animation"),this);
-    actionCollection()->addAction( QLatin1String( "animation" ), animAct);
+    actionCollection()->addAction( QStringLiteral( "animation" ), animAct);
     animAct->setChecked(m_animate);
     connect(animAct, SIGNAL(toggled(bool)), this, SLOT(setAnimation(bool)));
 
@@ -202,8 +212,8 @@
         }
     }
     m_themeAct->setCurrentItem(themeId);
-    actionCollection()->addAction( QLatin1String( "themes" ), m_themeAct);
-    m_themeAct->setIcon(KIcon( QLatin1String( "games-config-theme" )));
+    actionCollection()->addAction( QStringLiteral( "themes" ), m_themeAct);
+    m_themeAct->setIcon(QIcon::fromTheme( QStringLiteral( "games-config-theme" 
)));
     connect(m_themeAct,SIGNAL(triggered(int)),this,SLOT(changeTheme(int)));
 
     m_undoAct = KStandardGameAction::undo(this, SLOT(slotUndo()), 
actionCollection());
@@ -242,7 +252,7 @@
             disconnect(m_game, 0, m_scene, 0);
         }
         if (!m_game->isGameOver() && m_game->history().size() > 1) {
-            statusBar()->changeItem(i18n("Losses: %1",++m_losses), 2);
+            m_lossesLabel->setText(i18n("Losses: %1",++m_losses));
         }
         if (m_game->history().size() > 1) {
             m_computerStarts = !m_computerStarts;
@@ -255,7 +265,7 @@
         m_demoAi->deleteLater();
         m_demoAi = 0;
     }
-    QAction* act = actionCollection()->action("replay");
+    QAction* act = actionCollection()->action(QStringLiteral("replay"));
     if (act != 0) {
         act->setEnabled(false);
     }
@@ -269,7 +279,7 @@
             m_scene = new Scene(m_theme, m_animate);
             if (!m_lastGame.empty()) {
                 QString tmp = m_lastGame.first();
-                m_computerStarts = tmp.startsWith('2') ? true : false;
+                m_computerStarts = tmp.startsWith(QLatin1Char('2')) ? true : 
false;
             }
             m_game = new Game(dimension, m_lastGame, Kg::difficultyLevel(),
                               m_playbackSpeed, m_aiFactory);
@@ -326,7 +336,7 @@
             m_game,  SLOT(move(const Move&)));
     connect(m_game, SIGNAL(gameOver(const QList<Move>&)),
             this, SLOT(slotNewDemoWait()));
-    statusBar()->changeItem(i18n("Start a new Game to play"), 0);
+    statusBar()->showMessage(i18n("Start a new Game to play"));
     m_game->start();
 }
 
@@ -345,7 +355,7 @@
 
 void MainWindow::updateWins(const int wins) {
     m_wins = wins;
-    statusBar()->changeItem(i18n("Wins: %1", m_wins), 1);
+    m_winsLabel->setText(i18n("Wins: %1", m_wins));
 }
 
 void MainWindow::increaseLosses() {
@@ -358,34 +368,34 @@
 
 void MainWindow::updateLosses(const int losses) {
     m_losses = losses;
-    statusBar()->changeItem(i18n("Losses: %1", m_losses), 2);
+    m_lossesLabel->setText(i18n("Losses: %1", m_losses));
 }
 
 void MainWindow::slotGameOver() {
     if (m_game->boardFull()) {
-        statusBar()->changeItem(i18n("GAME OVER. Tie!"), 0);
+        statusBar()->showMessage(i18n("GAME OVER. Tie!"));
     } else {
         if (m_game->latestMove().player() == X) {
-            statusBar()->changeItem(i18n("GAME OVER. You won!"), 0);
+            statusBar()->showMessage(i18n("GAME OVER. You won!"));
             increaseWins();
         } else {
-            statusBar()->changeItem(i18n("GAME OVER. You lost!"), 0);
+            statusBar()->showMessage(i18n("GAME OVER. You lost!"));
             increaseLosses();
         }
     }
     disconnect(m_game, 0, m_demoAi, 0);
     m_hintAct->setEnabled(false);
-    actionCollection()->action("replay")->setEnabled(true);
-    connect(actionCollection()->action("replay"), SIGNAL(triggered()),
+    actionCollection()->action(QStringLiteral("replay"))->setEnabled(true);
+    connect(actionCollection()->action(QStringLiteral("replay")), 
SIGNAL(triggered()),
             this, SLOT(replay()));
 }
 
 void MainWindow::slotPlayerTurn() {
-    statusBar()->changeItem(i18n("It is your turn."), 0);
+    statusBar()->showMessage(i18n("It is your turn."));
 }
 
 void MainWindow::slotOposerTurn() {
-    statusBar()->changeItem(i18n("Waiting for computer."), 0);
+    statusBar()->showMessage(i18n("Waiting for computer."));
 }
 
 void MainWindow::slotUndo() {
@@ -402,8 +412,8 @@
         connect(m_game, SIGNAL(boardChanged(const Move&)),
                 m_demoAi, SLOT(changeBoard(const Move&)));
         m_hintAct->setEnabled(true);
-        actionCollection()->action("replay")->setEnabled(false);
-        disconnect(actionCollection()->action("replay"), SIGNAL(triggered()),
+        
actionCollection()->action(QStringLiteral("replay"))->setEnabled(false);
+        disconnect(actionCollection()->action(QStringLiteral("replay")), 
SIGNAL(triggered()),
                 this, SLOT(replay()));
     }
     m_game->undoLatest();
@@ -413,25 +423,24 @@
     if (!m_game->isGameOver()) {
         return;
     }
-    statusBar()->changeItem(i18n("Replaying game"), 0);
-    actionCollection()->action("replay")->setEnabled(false);
+    statusBar()->showMessage(i18n("Replaying game"));
+    actionCollection()->action(QStringLiteral("replay"))->setEnabled(false);
     disableUndo();
-    disconnect(actionCollection()->action("replay"), SIGNAL(triggered()),
+    disconnect(actionCollection()->action(QStringLiteral("replay")), 
SIGNAL(triggered()),
             this, SLOT(replay()));
     disconnect(m_game, 0, this, 0);
     connect(m_game, SIGNAL(replayEnd(const QList<Move>&)),
             this, SLOT(reEnableReplay()));
     disconnect(m_game, 0, m_scene, 0);
-    connect(m_game, SIGNAL(replayBegin()), m_scene, SLOT(replay()));
-    connect(m_game, SIGNAL(replayEnd(const QList<Move>&)),
-            m_scene, SLOT(slotGameOver(const QList<Move>&)));
+    connect(m_game, &Game::replayBegin, m_scene, &Scene::replay);
+    connect(m_game, &Game::replayEnd, m_scene, &Scene::slotGameOver);
     m_game->replay();
 }
 
 void MainWindow::reEnableReplay() {
-    actionCollection()->action("replay")->setEnabled(true);
-    statusBar()->changeItem(i18n("Game replayed."), 0);
-    connect(actionCollection()->action("replay"), SIGNAL(triggered()),
+    actionCollection()->action(QStringLiteral("replay"))->setEnabled(true);
+    statusBar()->showMessage(i18n("Game replayed."));
+    connect(actionCollection()->action(QStringLiteral("replay")), 
SIGNAL(triggered()),
                this, SLOT(replay()));
 }
 
@@ -462,4 +471,4 @@
 } /* namespace gui */
 
 // Class moc
-#include "mainwindow.moc"
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bovo-14.12.3/gui/mainwindow.h 
new/bovo-15.04.0/gui/mainwindow.h
--- old/bovo-14.12.3/gui/mainwindow.h   2015-02-21 07:40:21.000000000 +0100
+++ new/bovo-15.04.0/gui/mainwindow.h   2015-03-25 13:19:01.000000000 +0100
@@ -30,6 +30,8 @@
 #include "common.h"
 #include "theme.h"
 
+class QLabel;
+
 namespace ai {
     class Ai;
     class AiFactory;
@@ -101,6 +103,8 @@
     QStringList m_lastGame;
     bool m_animate;
     bool m_demoMode;
+    QLabel *m_winsLabel;
+    QLabel *m_lossesLabel;
 };
 
 } /* namespace gui */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bovo-14.12.3/gui/mark.cc new/bovo-15.04.0/gui/mark.cc
--- old/bovo-14.12.3/gui/mark.cc        2015-02-21 07:40:21.000000000 +0100
+++ new/bovo-15.04.0/gui/mark.cc        2015-03-25 13:19:01.000000000 +0100
@@ -38,14 +38,14 @@
 Mark::Mark(Scene* scene, const Move& move, bool animate, qreal fill) : 
QGraphicsSvgItem(),
   m_scene(scene), m_row(move.y()), m_col(move.x()), m_fill(fill) {
     m_sizeShrink = 1.0/12.0; //1.0/(qrand()%5+7.0);
-    setElementId(QString(move.player() == X ? "x%1" : "o%1")
+    setElementId(QString(move.player() == X ? QLatin1String("x%1") : 
QLatin1String("o%1"))
             .arg(QString::number(qrand() % 5 + 1)));
     m_tick = 20;
     m_ticker = 0;
     if (animate) {
         m_ticker = new QTimer(this);
         m_opacity = 0.0;
-        connect(m_ticker, SIGNAL(timeout()), this, SLOT(tick()));
+        connect(m_ticker, &QTimer::timeout, this, &Mark::tick);
         m_ticker->start(30);
     } else {
         m_opacity = 1.0;
@@ -56,7 +56,7 @@
 
 Mark::~Mark() {
     if (m_ticker) {
-        disconnect(m_ticker, SIGNAL(timeout()), this, SLOT(tick()));
+        disconnect(m_ticker, &QTimer::timeout, this, &Mark::tick);
         m_ticker->stop();
         m_ticker->deleteLater();
     }
@@ -85,12 +85,12 @@
 
 void Mark::kill() {
     if (m_ticker) {
-        disconnect(m_ticker, SIGNAL(timeout()), this, SLOT(tick()));
+        disconnect(m_ticker, &QTimer::timeout, this, &Mark::tick);
         m_ticker->stop();
     } else {
         m_ticker = new QTimer(this);
     }
-    connect(m_ticker, SIGNAL(timeout()), this, SLOT(killTick()));
+    connect(m_ticker, &QTimer::timeout, this, &Mark::killTick);
     m_ticker->start(30);
 }
 
@@ -135,4 +135,4 @@
 
 } /* namespace gui */
 
-#include "mark.moc"
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bovo-14.12.3/gui/scene.cc 
new/bovo-15.04.0/gui/scene.cc
--- old/bovo-14.12.3/gui/scene.cc       2015-02-21 07:40:21.000000000 +0100
+++ new/bovo-15.04.0/gui/scene.cc       2015-03-25 13:19:01.000000000 +0100
@@ -25,11 +25,10 @@
 #include <QtCore/QTime>
 #include <QtCore/QTimer>
 #include <QtGui/QPainter>
-#include <QtGui/QGraphicsSceneMouseEvent>
-#include <QtGui/QGraphicsView>
+#include <QGraphicsSceneMouseEvent>
+#include <QGraphicsView>
 #include <QtSvg/QSvgRenderer>
 
-#include <kstandarddirs.h>
 #include <kconfig.h>
 #include <kconfiggroup.h>
 #include <kdesktopfile.h>
@@ -124,16 +123,13 @@
     m_winningMoves = QList<Move>();
     m_game = game;
     m_player = m_game->player();
-    connect(m_game, SIGNAL(boardChanged(const Move&)),
-            SLOT(updateBoard(const Move&)));
+    connect(m_game, &Game::boardChanged, this, &Scene::updateBoard);
     if (!m_game->demoMode()) {
-        connect(m_game, SIGNAL(playerTurn()), SLOT(slotPlayerTurn()));
-        connect(m_game, SIGNAL(oposerTurn()), SLOT(slotOposerTurn()));
+        connect(m_game, &Game::playerTurn, this, &Scene::slotPlayerTurn);
+        connect(m_game, &Game::oposerTurn, this, &Scene::slotOposerTurn);
     }
-    connect(m_game, SIGNAL(gameOver(const QList<Move>&)),
-            this, SLOT(slotGameOver(const QList<Move>&)));
-    connect(this, SIGNAL(move(const Move&)),
-            m_game, SLOT(move(const Move&)));
+    connect(m_game, &Game::gameOver, this, &Scene::slotGameOver);
+    connect(this, &Scene::move, m_game, &Game::move);
 
     qDeleteAll(items()); //remove all marks
     m_paintMarker = false;
@@ -159,8 +155,7 @@
             if (Mark* mark = qgraphicsitem_cast<Mark *>(item)) {
                 if (mark->row() == move.y() && mark->col() == move.x()) {
                     if (m_animation) {
-                        connect(mark, SIGNAL(killed(Mark*)),
-                                this, SLOT(killMark(Mark*)));
+                        connect(mark, &Mark::killed, this, &Scene::killMark);
                         mark->kill();
                     } else {
                         removeItem(mark);
@@ -192,8 +187,8 @@
     sRect.setHeight(minSize*cellSize);
     sRect.setLeft(cellSize);*/
     QRectF tmpRect(size, size, minSize*shrinkSize, minSize*shrinkSize);
-    m_renderer->render(p, "background");
-    m_renderer->render(p, "grid", tmpRect);
+    m_renderer->render(p, QLatin1String("background"));
+    m_renderer->render(p, QLatin1String("grid"), tmpRect);
 }
 
 void Scene::drawForeground(QPainter *p, const QRectF& bounds) {
@@ -204,7 +199,7 @@
         rect.adjust(adjusting, adjusting, -adjusting, -adjusting);
         if (bounds.intersects(rect)) {
             p->setOpacity(0.4);
-            m_renderer->render(p, "x1", rect);
+            m_renderer->render(p, QStringLiteral("x1"), rect);
             p->setOpacity(1);
         }
     }
@@ -212,7 +207,7 @@
         QRectF rect(cellTopLeft(m_lastCol, m_lastRow), QSizeF(m_curCellSize,
                        m_curCellSize));
         if (bounds.intersects(rect)) {
-            m_renderer->render(p, "last", rect);
+            m_renderer->render(p, QStringLiteral("last"), rect);
         }
     }
     if (!m_winningMoves.empty()) {
@@ -222,7 +217,7 @@
             QRectF tmpRect(cellTopLeft(it->x(), it->y()), QSizeF(m_curCellSize,
                            m_curCellSize));
             if (bounds.intersects(tmpRect)) {
-                m_renderer->render(p, "win", tmpRect);
+                m_renderer->render(p, QStringLiteral("win"), tmpRect);
             }
             ++it;
         }
@@ -343,7 +338,7 @@
     m_hintItem = new HintItem(this, hint, m_animation, m_fill);
     m_hintItem->setSharedRenderer(m_renderer);
     addItem(m_hintItem);
-    connect(m_hintTimer, SIGNAL(timeout()), this, SLOT(hintTimeout()));
+    connect(m_hintTimer, &QTimer::timeout, this, &Scene::hintTimeout);
     m_hintTimer->start(2000);
 }
 
@@ -362,7 +357,7 @@
     if (!m_animation) {
         destroyHint();
     } else if (m_hintItem != 0) {
-        connect(m_hintItem, SIGNAL(killed()), this, SLOT(destroyHint()));
+        connect(m_hintItem, &HintItem::killed, this, &Scene::destroyHint);
         m_hintItem->kill();
     }
 }
@@ -393,8 +388,7 @@
     }
     m_winningMoves = QList<Move>();
     invalidate(0, 0, width(), height());
-    connect(m_game, SIGNAL(boardChanged(const Move&)),
-            this, SLOT(updateBoard(const Move&)));
+    connect(m_game, &Game::boardChanged, this, &Scene::updateBoard);
 }
 
 bool Scene::event(QEvent *event) {
@@ -407,4 +401,4 @@
 
 } /* namespace gui */
 
-#include "scene.moc"
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bovo-14.12.3/gui/theme.cc 
new/bovo-15.04.0/gui/theme.cc
--- old/bovo-14.12.3/gui/theme.cc       2015-02-21 07:40:21.000000000 +0100
+++ new/bovo-15.04.0/gui/theme.cc       2015-03-25 13:19:01.000000000 +0100
@@ -19,6 +19,9 @@
 *
 ********************************************************************/
 
+// Qt includes
+#include <QStandardPaths>
+
 // Selc include
 #include "theme.h"
 
@@ -26,7 +29,6 @@
 #include <kconfig.h>
 #include <kconfiggroup.h>
 #include <kdesktopfile.h>
-#include <kstandarddirs.h>
 
 // KConfig XT includes
 #include "settings.h"
@@ -38,9 +40,9 @@
 
 Theme::Theme(const QString& path, const int id) 
   : m_id(id), m_path(path) {
-    QString themePath = QString("themes/%1/").arg(m_path);
-            themePath = KStandardDirs::locate("appdata", themePath);
-    QString themerc = themePath + "themerc"; 
+    QString themePath = QStringLiteral("themes/%1/").arg(m_path);
+            themePath = QStandardPaths::locate(QStandardPaths::DataLocation, 
themePath, QStandardPaths::LocateDirectory);
+    QString themerc = themePath + QLatin1String("themerc");
     KDesktopFile themeConfig(themerc);
     m_name = themeConfig.readName();
     m_comment = themeConfig.readComment();
@@ -52,11 +54,11 @@
     m_gridColor = configGroup.readEntry("GridColor", "black");
 
     QString gridTypeStr = configGroup.readEntry("GridType", "svg");
-    if (gridTypeStr == "svg") {
+    if (gridTypeStr == QLatin1String("svg")) {
         m_gridType = SvgGrid;
-    } else if (gridTypeStr == "gomoku") {
+    } else if (gridTypeStr == QLatin1String("gomoku")) {
         m_gridType = GomokuGrid;
-    } else if (gridTypeStr == "squares") {
+    } else if (gridTypeStr == QLatin1String("squares")) {
         m_gridType = SquaresGrid;
     }
     
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bovo-14.12.3/gui/version.h 
new/bovo-15.04.0/gui/version.h
--- old/bovo-14.12.3/gui/version.h      2015-02-21 07:40:21.000000000 +0100
+++ new/bovo-15.04.0/gui/version.h      2015-03-25 13:19:01.000000000 +0100
@@ -20,5 +20,5 @@
 ********************************************************************/
 
 #ifndef BOVO_VERSION
-#define BOVO_VERSION "1.0"
+#define BOVO_VERSION "1.1"
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bovo-14.12.3/gui/view.cc new/bovo-15.04.0/gui/view.cc
--- old/bovo-14.12.3/gui/view.cc        2015-02-21 07:40:21.000000000 +0100
+++ new/bovo-15.04.0/gui/view.cc        2015-03-25 13:19:01.000000000 +0100
@@ -24,7 +24,7 @@
 
 // Qt Includes
 #include <QtGui/QColor>
-#include <QtGui/QGraphicsScene>
+#include <QGraphicsScene>
 #include <QtGui/QPalette>
 #include <QResizeEvent>
 
@@ -35,6 +35,7 @@
 
 View::View(Scene* scene, const QColor& bgColor, QWidget *parent) : 
QGraphicsView(scene, parent),
            m_scene(scene) {
+    Q_UNUSED(bgColor);
     setFrameStyle(QFrame::NoFrame);
 //    setCacheMode(QGraphicsView::CacheBackground);
     setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bovo-14.12.3/icons/CMakeLists.txt 
new/bovo-15.04.0/icons/CMakeLists.txt
--- old/bovo-14.12.3/icons/CMakeLists.txt       2015-02-21 07:40:21.000000000 
+0100
+++ new/bovo-15.04.0/icons/CMakeLists.txt       2015-03-25 13:19:01.000000000 
+0100
@@ -1 +1,10 @@
-kde4_install_icons(${ICON_INSTALL_DIR})
+ecm_install_icons(ICONS
+    hi128-apps-bovo.png
+    hi16-apps-bovo.png
+    hi22-apps-bovo.png
+    hi32-apps-bovo.png
+    hi48-apps-bovo.png
+    hi64-apps-bovo.png
+    DESTINATION ${ICON_INSTALL_DIR}
+    THEME hicolor
+)
Files old/bovo-14.12.3/icons/hi128-app-bovo.png and 
new/bovo-15.04.0/icons/hi128-app-bovo.png differ
Files old/bovo-14.12.3/icons/hi128-apps-bovo.png and 
new/bovo-15.04.0/icons/hi128-apps-bovo.png differ
Files old/bovo-14.12.3/icons/hi16-app-bovo.png and 
new/bovo-15.04.0/icons/hi16-app-bovo.png differ
Files old/bovo-14.12.3/icons/hi16-apps-bovo.png and 
new/bovo-15.04.0/icons/hi16-apps-bovo.png differ
Files old/bovo-14.12.3/icons/hi22-app-bovo.png and 
new/bovo-15.04.0/icons/hi22-app-bovo.png differ
Files old/bovo-14.12.3/icons/hi22-apps-bovo.png and 
new/bovo-15.04.0/icons/hi22-apps-bovo.png differ
Files old/bovo-14.12.3/icons/hi32-app-bovo.png and 
new/bovo-15.04.0/icons/hi32-app-bovo.png differ
Files old/bovo-14.12.3/icons/hi32-apps-bovo.png and 
new/bovo-15.04.0/icons/hi32-apps-bovo.png differ
Files old/bovo-14.12.3/icons/hi48-app-bovo.png and 
new/bovo-15.04.0/icons/hi48-app-bovo.png differ
Files old/bovo-14.12.3/icons/hi48-apps-bovo.png and 
new/bovo-15.04.0/icons/hi48-apps-bovo.png differ
Files old/bovo-14.12.3/icons/hi64-app-bovo.png and 
new/bovo-15.04.0/icons/hi64-app-bovo.png differ
Files old/bovo-14.12.3/icons/hi64-apps-bovo.png and 
new/bovo-15.04.0/icons/hi64-apps-bovo.png differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bovo-14.12.3/org.kde.bovo.desktop 
new/bovo-15.04.0/org.kde.bovo.desktop
--- old/bovo-14.12.3/org.kde.bovo.desktop       1970-01-01 01:00:00.000000000 
+0100
+++ new/bovo-15.04.0/org.kde.bovo.desktop       2015-03-25 13:19:01.000000000 
+0100
@@ -0,0 +1,123 @@
+[Desktop Entry]
+Exec=bovo -qwindowtitle %c
+Name=Bovo
+Name[ast]=Bovo
+Name[bs]=Bovo
+Name[ca]=Bovo
+Name[ca@valencia]=Bovo
+Name[cs]=Bovo
+Name[da]=Bovo
+Name[de]=Bovo
+Name[el]=Bovo
+Name[en_GB]=Bovo
+Name[eo]=Bovo
+Name[es]=Bovo
+Name[et]=Bovo
+Name[eu]=Bovo
+Name[fa]=بُوُ
+Name[fi]=Bovo
+Name[fr]=Bovo
+Name[ga]=Bovo
+Name[gl]=Bovo
+Name[hne]=बोवो
+Name[hr]=Bovo
+Name[hu]=Bovo
+Name[it]=Bovo
+Name[ja]=Bovo
+Name[kk]=Бово
+Name[km]=Bovo
+Name[ko]=Bovo
+Name[lt]=Bovo
+Name[lv]=Bovo
+Name[mai]=Bovo
+Name[mr]=बोव्हो
+Name[ms]=Bovo
+Name[nb]=Bovo
+Name[nds]=Bovo
+Name[ne]=बोभो
+Name[nl]=Bovo
+Name[nn]=Bovo
+Name[pa]=ਬੋਵੋ
+Name[pl]=Bovo
+Name[pt]=Bovo
+Name[pt_BR]=Bovo
+Name[ro]=Bovo
+Name[ru]=Bovo
+Name[sk]=Bovo
+Name[sl]=Bovo
+Name[sq]=Bovo
+Name[sr]=Бово
+Name[sr@ijekavian]=Бово
+Name[sr@ijekavianlatin]=Bovo
+Name[sr@latin]=Bovo
+Name[sv]=Bovo
+Name[te]=బొవొ
+Name[tr]=Bovo
+Name[ug]=Bovo
+Name[uk]=Бово
+Name[wa]=Bovo
+Name[x-test]=xxBovoxx
+Name[zh_CN]=Bovo
+Name[zh_TW]=Bovo
+Icon=bovo
+Type=Application
+X-DocPath=bovo/index.html
+GenericName=Five-in-a-row Board Game
+GenericName[ast]=Xuegu de tableru cinco en llinia
+GenericName[bs]=Pet-u-redu Igra na ploči
+GenericName[ca]=Joc de cinc en fila
+GenericName[ca@valencia]=Joc de cinc en fila
+GenericName[cs]=Desková hra "pět v řadě"
+GenericName[da]=Fem-på-række-brætspil
+GenericName[de]=Fünf-Gewinnt-Brettspiel
+GenericName[el]=Επιτραπέζιο παιχνίδι Πέντε στη σειρά
+GenericName[en_GB]=Five-in-a-row Board Game
+GenericName[eo]=Gobanga bretludo
+GenericName[es]=Juego de tablero de cinco en línea
+GenericName[et]=Viis ritta lauamäng
+GenericName[eu]=Bostko artzain-jokoa
+GenericName[fa]=بازی تخته پنج در یک سطر
+GenericName[fi]=Viiden suora
+GenericName[fr]=Jeu de plateau « Cinq-en-ligne »
+GenericName[ga]=Cluiche cláir cúig-cinn-as-a-chéile
+GenericName[gl]=Xogo de taboleiro «pai, fillo e nai»
+GenericName[hne]=बोर्ड मं एक लकीर मं पांच वाले खेल
+GenericName[hu]=Ötöt egy sorba táblajáték
+GenericName[is]=Fimm-í-röð borðleikur
+GenericName[it]=Forza 5, gioco da tavolo
+GenericName[ja]=五目並べ
+GenericName[kk]="Бесеуін - қатарға" ойны
+GenericName[km]=ល្បែង​ក្ដារ ប្រាំ​ក្នុង​មួយ​ជួរ
+GenericName[ko]=오목 게임
+GenericName[lt]=Penki-vienoje-eilutėje stalo žaidimas
+GenericName[lv]=Galda spēle pieci-rindā
+GenericName[mr]=एका-ओळीत-पाच बोर्ड खेळ
+GenericName[nb]=Brettspill fem på rad
+GenericName[nds]="Fief op de Reeg"-Speel
+GenericName[ne]=एक पङ्क्तिमा पाँच बोर्ड खेल
+GenericName[nl]=Vijf-op-een-rij bordspel
+GenericName[nn]=Fem på rad
+GenericName[pl]=Gra planszowa "Pięć w rzędzie"
+GenericName[pt]=Jogo de Tabuleiro Cinco-em-Linha
+GenericName[pt_BR]=Jogo de tabuleiro como Reversi
+GenericName[ro]=Joc de table Cinci-în-linie
+GenericName[ru]=Японские крестики-нолики
+GenericName[sk]=Stolová hra Piškvorky
+GenericName[sl]=Namizna igra Pet v vrsto
+GenericName[sr]=Игра на табли „пет у низу“
+GenericName[sr@ijekavian]=Игра на табли „пет у низу“
+GenericName[sr@ijekavianlatin]=Igra na tabli „pet u nizu“
+GenericName[sr@latin]=Igra na tabli „pet u nizu“
+GenericName[sv]=Fem-i-rad brädspel
+GenericName[tr]=Bir-satırda-beş Tahta Oyunu
+GenericName[ug]=بىر-قۇردا-بەش تاختا ئويۇنى
+GenericName[uk]=Гра на дошці (п'ять-в-рядку)
+GenericName[wa]=Djeu «cénk e roye»
+GenericName[x-test]=xxFive-in-a-row Board Gamexx
+GenericName[zh_CN]=五子棋游戏
+GenericName[zh_TW]=五子棋棋盤遊戲
+Terminal=false
+StartupNotify=true
+X-DBUS-StartupType=Multi
+Categories=Qt;KDE;Game;BoardGame;
+X-DBUS-ServiceName=org.kde.bovo


Reply via email to