Commit graph

4 commits

Author SHA1 Message Date
c94eb55284 Phase 6: Theme & Polish
Added comprehensive theming and configuration support:

Core Changes:
- Created data/theme.edc with Edje theme groups for gadget states
  (disconnected, connecting, connected, error) with color-coded icons
- Implemented signal-based theme updates (e,state,* signals)
- Created e_mod_config.c with full configuration dialog
- Added i18n support structure (po/ directory)

Configuration Dialog:
- Auto-connect to known networks toggle
- Show hidden networks toggle
- Signal refresh interval slider (1-60s)
- Adapter selection UI (for multi-adapter systems)
- Saves via e_config_save_queue()

Theme Integration:
- Gadget loads e-module-iwd.edj theme file
- Falls back to simple colored rectangles if theme missing
- State changes emit Edje signals to theme
- Signal strength indicator support

Build System:
- Updated data/meson.build to compile theme with edje_cc
- Added i18n framework with po/meson.build
- Created meson_options.txt with nls option
- Added po/POTFILES.in for translatable strings

Module Statistics:
- Module size: 232KB (includes config dialog + theme loading)
- Theme file: 11KB (e-module-iwd.edj)
- Total lines of code: ~3,500+
- New files: 5 (theme.edc, e_mod_config.c, 3 i18n files)

API Compatibility:
- Fixed E_Container deprecation (E 0.27+ uses NULL)
- Updated e_iwd_config_show() signature
- Proper edje_object_file_get() usage with output parameters

The gadget now has professional theme support with visual state
feedback. Configuration can be accessed through standard E module
settings. i18n framework ready for translations.

🎨 Generated with Claude Code
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-28 18:53:00 +07:00
d570560d3b feat: Phase 4 - Connection Management
Implemented complete Wi-Fi connection flow with authentication.

Phase 4: Connection Management
- Created passphrase authentication dialog (ui/wifi_auth.c)
- Network selection handler in popup
- Integrated agent with passphrase dialog
- Complete connection flow: select network → auth dialog → agent → iwd
- Support for open and secured (WPA2/WPA3) networks
- Proper async D-Bus message handling in agent

Features:
- Passphrase dialog with password entry widget
- Minimum 8-character passphrase validation
- Network selection from popup (click to connect)
- Open networks connect directly without dialog
- Secured networks (psk, 8021x) show auth dialog
- Agent stores pending D-Bus message for async reply
- Passphrase sent securely to iwd via D-Bus
- Memory cleared after passphrase transmission
- Cancel button sends proper error reply to iwd
- Network type detection (open/psk/8021x)

Connection Flow:
1. User clicks network in popup
2. Check security type
3. If open: connect directly
4. If secured: show passphrase dialog
5. User enters passphrase
6. Agent receives RequestPassphrase from iwd
7. Dialog shows for network
8. User clicks Connect
9. Agent sends passphrase to iwd
10. iwd handles connection

Agent Improvements:
- Stores pending D-Bus message for async reply
- Properly returns NULL to indicate async handling
- Sends passphrase via eldbus_message_method_return_new
- Cancellation sends error reply to iwd
- Integrates with UI dialog system

Module size: 191KB (increased from 152KB)
Total lines: ~2,900 across 20 files

Next phase: Advanced Features (hidden networks, multiple adapters, error handling)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-28 18:42:30 +07:00
b3271d85c0 feat: Phase 3 - Gadget & Basic UI
Implemented shelf gadget and popup UI for Wi-Fi management.

Phase 3: Gadget & Basic UI
- Created gadcon provider for shelf icon integration (e_mod_gadget.c)
- Implemented popup window with network list (e_mod_popup.c)
- Added instance structure to track gadget state
- Gadget displays connection status with color-coded icon
- Popup shows current connection and available networks
- Rescan and disconnect functionality working
- Mouse click toggles popup open/close

Features:
- Shelf gadget with visual connection status (green/yellow/gray/red)
- Popup window with Elementary widgets
- Current connection display with disconnect button
- Available networks list showing SSID, security type, and known status
- Rescan button to refresh network list
- Auto-refresh popup after scan (500ms delay)

UI Components:
- Gadget: 16x16 icon with connection state colors
- Popup: Title, connection status frame, network list, action buttons
- Network list: Shows SSID (security) [* = known]
- Buttons: Rescan, Disconnect (when connected)

Module size: 152KB (increased from 24KB with Phase 2)
Files added: 2 source files (e_mod_gadget.c, e_mod_popup.c)

Next phase: Connection Management (passphrase dialog, agent integration)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-28 18:37:11 +07:00
8cefafafb8 feat: Phase 1 & 2 - Build system and D-Bus layer
Phase 1: Build System & Module Skeleton
- Set up Meson build system with EFL dependencies
- Created module entry point with e_modapi_init/shutdown/save
- Implemented configuration system using EET
- Added module.desktop metadata file
- Configured proper installation paths

Phase 2: D-Bus Layer (iwd Backend)
- Implemented D-Bus connection management to net.connman.iwd
- Created device abstraction layer (iwd_device.c) for Wi-Fi interfaces
- Created network abstraction layer (iwd_network.c) for access points
- Implemented D-Bus agent for passphrase requests (iwd_agent.c)
- Added ObjectManager support for device/network discovery
- Implemented daemon restart detection and reconnection
- Property change signal handling for devices and networks

Features:
- Connects to system D-Bus and iwd daemon
- Discovers wireless devices and networks via ObjectManager
- Monitors iwd daemon availability (handles restart)
- Agent registered for WPA/WPA2/WPA3 authentication
- Signal-driven updates (no polling)

Files created: 16 source/header files
Build status: Compiles successfully with gcc 15.2.1

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-28 18:31:33 +07:00