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.
  • Windows
  • Linux、Unix
  • Android
  • 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

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.