农历日历 v1.0.4
载入中...
搜索中...
未找到
LunarCalendar

Author: Kang Lin kl222.nosp@m.@126.nosp@m..com


:cn: 中文


  • 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
  • Download setup package
  • Donation
  • Screenshots
  • Compile
  • Other application use the library
  • Contribution
  • License Agreement
    • The third-party libraries

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](https://gitee.com/kl222/RabbitCommon/raw/master/Src/Resource/image/Contribute.png "donation")

Screenshots

  • Windows

  • Ubuntu
Ubuntu
  • Android
Android Screenshots
  • Task
Task

<a href="https://github.com/KangLin/LunarCalendar/releases/latest" >Download setup package</a>

Compile

  • Depend

    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_DIR=
      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_DIR=
      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_DIR=
        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_DIR= 
        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_DIR= 
        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_DIR= 
        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
        • 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
        • add submodule:
          git submodule add https://github.com/KangLin/LunarCalendar.git 3th_lib/LunarCalendar
          git submodule update --init --recursive
          
        • Add follow code in CMakeLists.txt
          add_subdirectory(3th_lib/LunarCalendar/Src)
          
      • 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

@ref "/home/runner/work/LunarCalendar/LunarCalendar/License.md" "License.md"

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