A cross-platform desktop application for monitoring and logging internet connectivity status. OfflineLog continuously checks your internet connection and maintains a detailed log of online/offline periods with timestamps.
- 🔍 Continuous Connectivity Monitoring: Automatically monitors internet connectivity using REST API checks
- 📊 Connection Event Logging: Tracks and displays all connection changes with precise timestamps
- 🛡️ False Positive Protection: Uses an error counter to prevent false offline detections (requires 4 consecutive failures)
- 🎨 Modern Qt Quick UI: Clean and intuitive graphical interface built with QML
- ⏱️ Timestamp Tracking: Records start and end times for each connection period
- 🔄 Real-time Status Updates: Live status indicator showing current connection state
- CMake 3.16 or higher
- Qt 6.8 or higher (with Qt Quick component)
- C++17 compatible compiler
- Qt Creator (recommended) or any IDE with CMake support
- Windows, macOS, or Linux
- Internet connection (for connectivity testing)
-
Clone the repository
git clone https://github.com/virtuosonic/offlinelog.git cd offlinelog -
Configure the build
mkdir build cd build cmake .. -
Build the application
cmake --build .Or on Windows with Visual Studio:
cmake --build . --config Release -
Run the application
./appofflinelog # Linux/macOS # or appofflinelog.exe # Windows
- Open Qt Creator
- File → Open File or Project
- Select
CMakeLists.txtfrom the project root - Configure the project (select Qt 6.8 or higher)
- Build and Run
- Launch the application - The app will immediately start monitoring your internet connection
- View status - The top of the window shows your current connection status (Online/Offline/Verifying)
- Monitor logs - The main list displays all connection events with start and end timestamps
- Automatic logging - Connection changes are automatically logged as they occur
- The application periodically makes REST API calls to test connectivity
- Normal check interval: 10 seconds
- Error check interval: 2 seconds (when connection issues are detected)
- After 4 consecutive failures, the connection is marked as offline
- When connectivity is restored, the connection is immediately marked as online
offlinelog/
├── CMakeLists.txt # CMake build configuration
├── main.cpp # Application entry point
├── Main.qml # QML user interface
├── offlinelog.h/cpp # Main application logic
├── logentrymodel.h/cpp # List model for connection logs
├── errorcounter.h/cpp # Error counting and state management
├── onlinetest.h/cpp # REST API connectivity testing
└── ping.h/cpp # Ping-based connectivity testing
- Follow Qt coding conventions
- Use 4 spaces for indentation (tabs converted to spaces)
- Class names use PascalCase
- Member variables prefixed with
m_
- Create a feature branch:
git checkout -b feature/your-feature-name - Make your changes
- Test thoroughly
- Commit your changes:
git commit -m "Add: description of feature" - Push to the branch:
git push origin feature/your-feature-name - Open a Pull Request
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
If you find a bug, please open an issue with:
- A clear description of the problem
- Steps to reproduce the issue
- Expected vs actual behavior
- Your operating system and Qt version
- Any relevant error messages or logs
This project is licensed under the MIT License
- Built with Qt
- Created by Gabriel Espinoza virtuosonic
For support, please open an issue on GitHub or contact the maintainer.
- Initial release
- Basic connectivity monitoring
- Connection event logging
- Qt Quick GUI
