Skip to content

Abuudiii/WorldClock

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

World Time Desktop Application

A modern, feature-rich desktop application for monitoring time zones around the world with advanced visualization and management capabilities.

World Time App Qt Version C++ Standard Build System

✨ Features

🕐 Core Functionality

  • Real-time Clock Display: Shows current time for major world cities
  • Smart Time Zone Management: IANA time zone database with automatic DST handling
  • Advanced Search: Multi-term search with real-time filtering
  • Favorites System: Mark frequently used time zones with drag-and-drop reordering

🎨 Visual Enhancements

  • Time-of-Day Colors: Dynamic background colors based on local time periods
    • 🌅 Dawn (6:00-8:59): Warm sunrise orange
    • ☀️ Day (9:00-17:59): Light blue sky
    • 🌅 Dusk (18:00-21:59): Sunset orange
    • 🌙 Night (22:00-5:59): Dark navy blue
  • Time Zone Overlap Bar: Visual 24-hour timeline showing business hours overlap across zones
  • Professional UI: Clean, modern interface with consistent styling

⚙️ Advanced Settings

  • Comprehensive Preferences: 40+ configurable settings via tabbed dialog
  • Display Customization: Multiple time formats, show/hide seconds, timezone names
  • Layout Options: Grid layout with configurable columns
  • Persistence: All settings and favorites automatically saved

♿ Accessibility & Usability

  • Keyboard Navigation: Full keyboard support with shortcuts
  • Screen Reader Compatible: Proper accessibility attributes
  • Responsive Design: Adapts to window resizing
  • Cross-platform: Native look and feel on all supported platforms

🚀 Quick Start

Prerequisites

  • Qt 6.9+ (Core, Widgets, GUI modules)
  • CMake 3.20+
  • C++17 compatible compiler
    • GCC 8+, Clang 7+, MSVC 2019+

Building from Source

macOS (Homebrew)

# Install dependencies
brew install qt cmake

# Clone and build
git clone https://github.com/yourusername/WorldClock.git
cd WorldClock
mkdir build && cd build
cmake ..
make -j$(nproc)

# Run application
./src/app/WorldTimeApp.app/Contents/MacOS/WorldTimeApp

Linux (Ubuntu/Debian)

# Install dependencies
sudo apt update
sudo apt install qt6-base-dev qt6-tools-dev cmake build-essential

# Clone and build
git clone https://github.com/yourusername/world-time-app.git
cd world-time-app
mkdir build && cd build
cmake ..
make -j$(nproc)

# Run application
./src/app/WorldTimeApp

Windows (MSVC)

# Install Qt6 and CMake via Qt installer or vcpkg
# Clone repository
git clone https://github.com/yourusername/world-time-app.git
cd world-time-app

# Configure and build
mkdir build && cd build
cmake .. -DCMAKE_PREFIX_PATH="C:/Qt/6.9.1/msvc2019_64"
cmake --build . --config Release

# Run application
.\src\app\Release\WorldTimeApp.exe

🎮 Usage

Basic Operations

  • Search: Use Ctrl+F or click the search bar to filter time zones
  • Favorites: Right-click any clock to add/remove from favorites
  • Settings: Access via menu or Ctrl+, (Cmd+, on macOS)
  • Refresh: Manual refresh with Ctrl+R or the refresh button

Keyboard Shortcuts

Shortcut Action
Ctrl+F Focus search field
Ctrl+R Refresh all clocks
Ctrl+, Open settings
Ctrl+Q Quit application
Esc Clear search
Tab Navigate between clocks
Enter/Space Select focused clock

Settings Categories

  • Display: Time format, seconds display, timezone names
  • Time Zones: Manage favorites, search filters
  • Advanced: Refresh rates, startup options, grid layout

🏗️ Architecture

Design Patterns

  • MVC Architecture: Clean separation between model, view, and controller
  • Singleton Pattern: TimeZoneManager and SettingsManager
  • Signal-Slot Pattern: Real-time updates throughout the application

Key Components

src/
├── core/                   # Business logic layer
│   ├── TimeZoneManager.*   # Time zone operations and caching
│   ├── SettingsManager.*   # Application preferences management
│   └── SearchEngine.*      # Search and filtering functionality
├── widgets/                # UI components
│   ├── MainWindow.*        # Primary application window
│   ├── ClockDisplay.*      # Individual time zone display widget
│   ├── SettingsDialog.*    # Comprehensive settings interface
│   └── TimeZoneOverlapBar.* # Visual overlap timeline
└── app/
    └── main.cpp           # Application entry point

🤝 Contributing

Contributions are welcome! Please feel free to submit pull requests or create issues for bugs and feature requests.

Development Guidelines

  • Follow Qt coding conventions
  • Maintain MVC architecture separation
  • Add appropriate documentation for new features
  • Ensure cross-platform compatibility
  • Test on multiple Qt versions when possible

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • Qt Framework: Cross-platform application development
  • IANA Time Zone Database: Accurate global time zone data
  • CMake: Build system configuration
  • Modern C++: Language features and best practices

📊 Project Status

  • Phase 1: Core functionality complete
  • Phase 2: Enhanced features complete
  • Phase 3: Visual enhancements complete
  • 🚀 Ready for Production: Full-featured, stable application

Built with ❤️ using Qt6 and Modern C++

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published