Menu

Tree [dacfbe] master /
 History

HTTPS access


File Date Author Commit
 .github 2025-02-12 Kang Lin Kang Lin [dacfbe] CMake: rename RabbitCommon_DIR to RabbitCommon_...
 3th_lib 2023-12-04 Kang Lin Kang Lin [416c03] Update sxtwl 2.0
 App 2025-02-12 Kang Lin Kang Lin [dacfbe] CMake: rename RabbitCommon_DIR to RabbitCommon_...
 Docs 2025-02-12 Kang Lin Kang Lin [dacfbe] CMake: rename RabbitCommon_DIR to RabbitCommon_...
 Install 2024-04-03 Kang Lin Kang Lin [e11fa9] Release v1.0.4
 Package 2023-12-03 Kang Lin Kang Lin [e9f38d] CI: add cmake package
 Src 2025-02-12 Kang Lin Kang Lin [dacfbe] CMake: rename RabbitCommon_DIR to RabbitCommon_...
 Update 2024-04-03 Kang Lin Kang Lin [e11fa9] Release v1.0.4
 cmake 2024-06-20 Kang Lin Kang Lin [936b2d] Fix cmake/LunarCalendarConfig.cmake.in to CMAKE...
 debian 2024-06-20 Kang Lin Kang Lin [bf9e27] Fix debian/rules bug in aarch64
 share 2024-01-15 Kang Lin Kang Lin [45597e] Debian: modify package
 test 2019-06-03 KangLin KangLin [99add9] Add install appimage
 .gitignore 2024-01-04 Kang Lin Kang Lin [0849d0] Android: modify font
 .gitmodules 2019-03-29 KangLin KangLin [48fcec] Add lunar algorithm
 .travis.yml 2025-02-12 Kang Lin Kang Lin [dacfbe] CMake: rename RabbitCommon_DIR to RabbitCommon_...
 Authors.md 2019-04-12 KangLin KangLin [c81b14] File format dos to unix
 Authors_zh_CN.md 2019-04-12 KangLin KangLin [c81b14] File format dos to unix
 CMakeLists.txt 2025-02-12 Kang Lin Kang Lin [dacfbe] CMake: rename RabbitCommon_DIR to RabbitCommon_...
 ChangeLog.md 2025-02-11 Kang Lin Kang Lin [f24457] Fix typo
 License.md 2019-03-31 KangLin KangLin [9ae5e4] Add documents
 README.md 2025-02-12 Kang Lin Kang Lin [dacfbe] CMake: rename RabbitCommon_DIR to RabbitCommon_...
 README_zh_CN.md 2025-02-12 Kang Lin Kang Lin [dacfbe] CMake: rename RabbitCommon_DIR to RabbitCommon_...
 appveyor.yml 2025-02-12 Kang Lin Kang Lin [dacfbe] CMake: rename RabbitCommon_DIR to RabbitCommon_...
 build_debpackage.sh 2025-02-12 Kang Lin Kang Lin [dacfbe] CMake: rename RabbitCommon_DIR to RabbitCommon_...
 deploy.sh 2024-05-31 Kang Lin Kang Lin [050fa6] Modfiy rules and CMakeLists.
 vcpkg.json 2024-04-03 Kang Lin Kang Lin [e11fa9] Release v1.0.4

Read Me

LunarCalendar

Author: Kang Lin kl222@126.com


🇨🇳 中文


  • Documentation

  • master

build
Windows Build status

  • develop

build
Windows Build status

GitHub stars
Gitee stars
GitHub forks
GitHub issues
Current release
All releases downloads
Download LunarCalendar


Table of Contents:


Features

The lunar calendar written by Qt. It provides:

  • A lunar calendar library of Qt GUI, support QSS.
  • Solar calendar
  • Lunar calendar
  • Solar and Lunar holiday(eg: chinese holidays. solar term etc.)
  • Solar and Lunar anniversary (eg: birthday, wedding anniversary, etc.)
  • User-defined task prompts on the calendar (Displayed with highlighted dots)
  • ToolTip shows detailed tooltip content
  • Month view
  • Week view
  • Example
  • A simple calendar app. Used to illustrate how to use this lunar calendar library.
  • A complete application of this library Calendar
  • Cross-platform, support multiple operating systems.
    See: Qt5 supported platforms, Qt6 supported platforms.
  • [x] Windows
  • [x] Linux、Unix
  • [x] Android
  • [x] Mac os
  • [ ] IOS

Mac os and IOS, I don't have the corresponding equipment,
please compile and test the students with the corresponding equipment.

Donation

donation

Screenshots

  • Windows

Screenshots
Screenshots

  • Ubuntu

Ubuntu

  • Android

Android Screenshots

  • Task

Task

Download setup package

Compile

git clone https://github.com/KangLin/RabbitCommon.git

  • Create and enter the build directory

    git clone --recursive https://github.com/KangLin/LunarCalendar.git
    cd LunarCalendar
    mkdir build
    
  • Use cmake

  • linux

    cd build
    cmake .. -DCMAKE_INSTALL_PREFIX=`pwd`/install \
         -DCMAKE_BUILD_TYPE=Release \
         -DQt5_DIR=${QT_ROOT}/lib/cmake/Qt5 \
         -DRabbitCommon_ROOT=
    cmake --build . --config Release --target install
    
  • windows

    cd build
    cmake .. -DCMAKE_INSTALL_PREFIX=`pwd`/install ^
           -DCMAKE_BUILD_TYPE=Release ^
           -DQt5_DIR=${QT_ROOT}/lib/cmake/Qt5 ^
           -DRabbitCommon_ROOT=
    cmake --build . --config Release --target install
    
  • Android

    • The host is linux

      cd build
      # If is Qt6
      cmake .. -DCMAKE_BUILD_TYPE=Release \
      -DCMAKE_INSTALL_PREFIX=pwd/android-build \
      -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake \
      -DANDROID_ABI="armeabi-v7a with NEON" \
      -DANDROID_PLATFORM=android-18 \
      -DQT_DIR= \
      -DQt6_DIR= \
      -DRabbitCommon_ROOT=
      cmake --build . --target all

      # If is Qt5
      cmake .. -DCMAKE_BUILD_TYPE=Release \
      -DCMAKE_INSTALL_PREFIX=pwd/android-build \
      -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake \
      -DANDROID_ABI="armeabi-v7a with NEON" \
      -DANDROID_PLATFORM=android-18 \
      -DQT_DIR= \
      -DQt5_DIR= \
      -DRabbitCommon_ROOT=
      cmake --build . --config Release --target install
      cmake --build . --target APK

    • The host is windows

      cd build
      ; If is Qt5
      cmake .. -G"Unix Makefiles" ^
      -DCMAKE_BUILD_TYPE=Release ^
      -DCMAKE_INSTALL_PREFIX=pwd/android-build ^
      -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake ^
      -DCMAKE_MAKE_PROGRAM=${ANDROID_NDK}/prebuilt/windows-x86_64/bin/make.exe ^
      -DANDROID_PLATFORM=android-18 ^
      -DANDROID_ABI=arm64-v8a ^
      -DANDROID_ARM_NEON=ON ^
      -DQT_DIR= ^
      -DQt5_DIR= ^
      -DRabbitCommon_ROOT=
      cmake --build . --config Release --target install
      cmake --build . --target APK

      ; If is Qt6
      cmake .. -G"Unix Makefiles" ^
      -DCMAKE_BUILD_TYPE=Release ^
      -DCMAKE_INSTALL_PREFIX=pwd/android-build ^
      -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake ^
      -DCMAKE_MAKE_PROGRAM=${ANDROID_NDK}/prebuilt/windows-x86_64/bin/make.exe ^
      -DANDROID_PLATFORM=android-18 ^
      -DANDROID_ABI=arm64-v8a ^
      -DANDROID_ARM_NEON=ON ^
      -DQT_DIR= ^
      -DQt6_DIR= ^
      -DRabbitCommon_ROOT=
      cmake --build . --target all

    • Parameter Description: https://developer.android.google.cn/ndk/guides/cmake

    • ANDROID_ABI: The following values can be taken:
      Goal ABI. If the target ABI is not specified, CMake uses armeabi-v7a by default.
      Valid ABI are:
      • armeabi:CPU with software floating point arithmetic based on ARMv5TE
      • armeabi-v7a:ARMv7-based device with hardware FPU instructions (VFP v3 D16)
      • armeabi-v7a with NEON:Same as armeabi-v7a, but with NEON floating point instructions enabled. This is equivalent to setting -DANDROID_ABI=armeabi-v7a and -DANDROID_ARM_NEON=ON.
      • arm64-v8a:ARMv8 AArch64 Instruction Set
      • x86:IA-32 Instruction Set
      • x86_64 - x86-64 Instruction Set
    • ANDROID_NDK <path> The path of installed ndk in host</path>
    • ANDROID_PLATFORM: For a full list of platform names and corresponding Android system images, see the [Android NDK Native API] (https://developer.android.google.com/ndk/guides/stable_apis.html)
    • ANDROID_ARM_MODE
    • ANDROID_ARM_NEON
    • ANDROID_STL: Specifies the STL that CMake should use.

      • c++_shared: The shared library variant of libc++.
      • c++_static: The static library variant of libc++.
      • none: No C++ standard library support.
      • system: The system STL
    • Install apk to devices

      adb install android-build-debug.apk

  • Note:

before v1.0.4 and qt6

  • windows
    If you build app. Qt does not provide openssl dynamic library for copyright reasons, so you must copy the dynamic library of openssl to the installation directory.
    - If it is 32, you can find the dynamic library of openssl (libeay32.dll, ssleay32.dll) in the Qt installer Tools\QtCreator\bin directory.
    - If it is 64-bit, you will need to download the binary installation package for openssl yourself.

  • linux

    sudo apt-get install libssl1.1

Develop

  |-App                                        application source code
  |-Src                                        calendar library source code
     |- LunarCalendar.h                        calendar interface header file
         |- Resource
               |- database
                     |- chinese_holidays.sql   chinese holidays sql

Other application use the library

  • Direct use the library source code.

    • cmake

      • Submodule

      • No submodule

        • Download LunarCalendar source code from https://github.com/KangLin/LunarCalendar

          git clone --recursive https://github.com/KangLin/LunarCalendar.git

        • Add follow code in CMakeLists.txt

          set(LunarCalendar_DIR $ENV{LunarCalendar_DIR} CACHE PATH "Set LunarCalendar source code root directory.")
          if(EXISTS ${LunarCalendar_DIR}/Src)
          add_subdirectory(${LunarCalendar_DIR}/Src ${CMAKE_BINARY_DIR}/LunarCalendar)
          else()
          message("1. Please download LunarCalendar source code from https://github.com/KangLin/LunarCalendar")
          message(" ag:")
          message(" git clone https://github.com/KangLin/LunarCalendar.git")
          message("2. Then set cmake value or environment variable LunarCalendar_DIR to download root directory.")
          message(" ag:")
          message(FATAL_ERROR " cmake -DLunarCalendar_DIR= ")
          endif()

        • Add libraries and include in CMakeLists.txt

          SET(APP_LIBS ${PROJECT_NAME} ${QT_LIBRARIES})
          if(TARGET LunarCalendar)
          target_compile_definitions(${PROJECT_NAME}
          PRIVATE -DLunarCalendar)
          target_include_directories(${PROJECT_NAME}
          PRIVATE "${LunarCalendar_DIR}/Src"
          "${LunarCalendar_DIR}/Src/export")
          set(APP_LIBS ${APP_LIBS} LunarCalendar)
          endif()
          target_link_libraries(${PROJECT_NAME} ${APP_LIBS})

  • Use in library mode

    • cmake

      • Cmake parameter LunarCalendar_DIR specifies the installation root directory

        find_package(LunarCalendar)
        
      • Add libraries and include in CMakeLists.txt

        SET(APP_LIBS ${PROJECT_NAME} ${QT_LIBRARIES})
        if(LunarCalendar_FOUND)
            target_compile_definitions(${PROJECT_NAME}
                        PRIVATE -DLunarCalendar)
            target_include_directories(${PROJECT_NAME}
                        PRIVATE "${LunarCalendar_INCLUDE_DIRS}/Src"
                                "${LunarCalendar_INCLUDE_DIRS}/Src/export")
            set(APP_LIBS ${APP_LIBS} ${LunarCalendar_LIBRARIES})
        endif()
        target_link_libraries(${PROJECT_NAME} ${APP_LIBS})
        

Contribution

License Agreement

Please follow the license agreement for the third-party libraries below and the license and thank the authors of the third-party libraries.

The third-party libraries

Other projects using this project

MongoDB Logo MongoDB