diff --git a/CMakeLists.txt b/CMakeLists.txt index cfcb530..4bff850 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,67 +1,75 @@ -project(kfourinline) - cmake_minimum_required (VERSION 3.5 FATAL_ERROR) + +# KDE Application Version, managed by release script +set(KDE_APPLICATIONS_VERSION_MAJOR "19") +set(KDE_APPLICATIONS_VERSION_MINOR "11") +set(KDE_APPLICATIONS_VERSION_MICRO "70") +set(KDE_APPLICATIONS_VERSION "${KDE_APPLICATIONS_VERSION_MAJOR}.${KDE_APPLICATIONS_VERSION_MINOR}.${KDE_APPLICATIONS_VERSION_MICRO}") + +project(kfourinline VERSION ${KDE_APPLICATIONS_VERSION}) + set (QT_MIN_VERSION "5.7.0") set (KF5_MIN_VERSION "5.30.0") find_package(ECM ${KF5_MIN_VERSION} 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 Svg) find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS Config ConfigWidgets CoreAddons Crash DNSSD DocTools I18n WidgetsAddons XmlGui ) find_package(KF5KDEGames 4.9.0 REQUIRED) include(FeatureSummary) include(ECMInstallIcons) include(KDEInstallDirs) include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE) include(KDECMakeSettings) include(ECMAddAppIcon) include(ECMQtDeclareLoggingCategory) +include(ECMSetupVersion) if (${KF5Config_VERSION} STRGREATER "5.56.0") add_definitions(-DQT_NO_FOREACH) MESSAGE(STATUS "compile without foreach") endif() add_subdirectory(src) add_subdirectory(grafix) add_subdirectory(doc) ########### install files ############### install(PROGRAMS org.kde.kfourinline.desktop DESTINATION ${KDE_INSTALL_APPDIR}) install(FILES org.kde.kfourinline.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR}) ecm_install_icons(ICONS 128-apps-kfourinline.png 16-apps-kfourinline.png 22-apps-kfourinline.png 32-apps-kfourinline.png 48-apps-kfourinline.png 64-apps-kfourinline.png DESTINATION ${KDE_INSTALL_ICONDIR} ) if (${ECM_VERSION} STRGREATER "5.58.0") install(FILES kfourinline.categories DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}) else() install(FILES kfourinline.categories DESTINATION ${KDE_INSTALL_CONFDIR}) endif() feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 74a5c73..39b38c9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,78 +1,80 @@ ########### next target ############### set(kwin4_SRCS main.cpp chatdlg.cpp kwin4.cpp spritenotify.cpp thememanager.cpp displayintro.cpp displaygame.cpp kwin4view.cpp kwin4doc.cpp kwin4player.cpp buttonsprite.cpp introsprite.cpp piecesprite.cpp scoresprite.cpp score.cpp aiboard.cpp reflectiongraphicsscene.cpp kgamedebugdialog.cpp kgamedialog.cpp kgamedialogconfig.cpp kgameconnectdialog.cpp kchatdialog.cpp pixmapsprite.cpp kfontutils.cpp ) qt5_add_resources(kwin4_SRCS kfourinline.qrc) configure_file(config-src.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-src.h) ki18n_wrap_ui(kwin4_SRCS settings.ui statuswidget.ui statistics.ui ) kconfig_add_kcfg_files(kwin4_SRCS prefs.kcfgc ) +ecm_setup_version(${KDE_APPLICATIONS_VERSION} VARIABLE_PREFIX KFOURINLINE VERSION_HEADER kfourinline_version.h) + ecm_qt_declare_logging_category(kwin4_SRCS HEADER kfourinline_debug.h IDENTIFIER KFOURINLINE_LOG CATEGORY_NAME log_fourinline) file(GLOB ICONS_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/../*-apps-k*.png") ecm_add_app_icon(kwin4_SRCS ICONS ${ICONS_SRCS}) add_executable(kfourinline ${kwin4_SRCS}) target_link_libraries(kfourinline KF5::CoreAddons KF5::Crash KF5::DNSSD KF5::XmlGui KF5::WidgetsAddons KF5KDEGames KF5KDEGamesPrivate Qt5::Svg ) install(TARGETS kfourinline ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} ) ########### next target ############### set(kwin4proc_SRCS aiboard.cpp kgameprocess.cpp kwin4proc.cpp ) add_executable(kfourinlineproc ${kwin4proc_SRCS}) target_link_libraries(kfourinlineproc KF5KDEGames KF5KDEGamesPrivate Qt5::Svg) install(TARGETS kfourinlineproc ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} ) ########### install files ############### install( FILES kwin4.kcfg DESTINATION ${KDE_INSTALL_KCFGDIR} ) diff --git a/src/main.cpp b/src/main.cpp index e26cc0a..6b5d7b9 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,132 +1,130 @@ /* This file is part of the KDE games kwin4 program Copyright (c) 1995-2007 Martin Heni This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /** \mainpage KWin4 API Documentation * * \section intro_sec Introduction * * This is the API documentation for the KDE game 'kwin4'. * * \section design_sec Design * * The design diagram shows the dependencies for the key classes of * the KWin4 program. * The coloring of the classes shows roughly their function in the * groups (program, document and engine, display, QGraphics and KGame library). * * \image html kwin4classes.png "Class diagram for KWin4" * * */ #include #include #include #include #include #include #include #include "kwin4.h" #include "kfourinline_debug.h" - -#define KWIN4_VERSION "v1.41" - +#include "kfourinline_version.h" // Debug level for the program int global_debug = 0; // Skip intro bool global_skip_intro = false; // Demo (autoplay mode) bool global_demo_mode = false; // Main function int main(int argc, char *argv[]) { global_debug = 0; QApplication app(argc, argv); Kdelibs4ConfigMigrator migrate(QStringLiteral("kfourinline")); migrate.setConfigFiles(QStringList() << QStringLiteral("kfourinlinerc")); migrate.setUiFiles(QStringList() << QStringLiteral("kfourinlineui.rc")); migrate.migrate(); KLocalizedString::setApplicationDomain("kfourinline"); KAboutData aboutData( QStringLiteral("kfourinline"), i18n("KFourInLine"), - QStringLiteral(KWIN4_VERSION), + QStringLiteral(KFOURINLINE_VERSION_STRING), i18n("KFourInLine: Two player board game"), KAboutLicense::GPL, i18n("(c) 1995-2007, Martin Heni")); aboutData.addAuthor(i18n("Martin Heni"),i18n("Game design and code"), QStringLiteral("kde@heni-online.de")); aboutData.addAuthor(i18n("Johann Ollivier Lapeyre"),i18n("Graphics"), QStringLiteral("johann.ollivierlapeyre@gmail.com")); aboutData.addAuthor(i18n("Eugene Trounev"),i18n("Graphics"), QStringLiteral("eugene.trounev@gmail.com")); aboutData.addAuthor(i18n("Benjamin Meyer"), i18n("Code Improvements")); aboutData.setHomepage(QStringLiteral("http://games.kde.org/kfourinline")); QCommandLineParser parser; KAboutData::setApplicationData(aboutData); KCrash::initialize(); parser.addOption(QCommandLineOption(QStringList() << QStringLiteral("d") << QStringLiteral("debug"), i18n("Enter debug level"), QStringLiteral("level"))); parser.addOption(QCommandLineOption(QStringList() << QStringLiteral("skipintro"), i18n("Skip intro animation"))); parser.addOption(QCommandLineOption(QStringList() << QStringLiteral("demo"), i18n("Run game in demo (autoplay) mode"))); aboutData.setupCommandLine(&parser); parser.process(app); aboutData.processCommandLine(&parser); app.setWindowIcon(QIcon::fromTheme(QStringLiteral("kfourinline"))); /* command line handling */ // Check for debug command line option if (parser.isSet(QStringLiteral("debug"))) { global_debug=QString(parser.value(QStringLiteral("debug"))).toInt(); qCDebug(KFOURINLINE_LOG) << "Debug level set to" << global_debug; } // Check for debug command line option if (parser.isSet(QStringLiteral("skipintro"))) { global_skip_intro = true; qCDebug(KFOURINLINE_LOG) << "Skip intro cmd line chosen" << global_skip_intro; } // Check for debug command line option if (parser.isSet(QStringLiteral("demo"))) { global_demo_mode = true; qCDebug(KFOURINLINE_LOG) << "Running in demo mode" << global_demo_mode; } // Start application // Start session if (app.isSessionRestored()) { RESTORE(KWin4App); } else { KWin4App *kwin4 = new KWin4App(); kwin4->show(); } return app.exec(); }