Skip to content

AtharIbrahim/Slide_Controller

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

5 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Slide Controller ๐Ÿ“ฑ๐Ÿ–ฅ๏ธ

A wireless presentation control system consisting of a mobile app (Flutter/Dart) that connects to a desktop Python application via WiFi to remotely control PowerPoint presentations, Google Slides, and videos.

๐Ÿš€ Features

  • Wireless Control: Control presentations remotely via WiFi connection
  • PowerPoint Support: Navigate through PowerPoint presentations seamlessly
  • Google Slides Integration: Control Google Slides presentations
  • Video Control: Play, pause, and navigate through videos
  • IP-Based Connection: Connect using local network IP address
  • Real-time Communication: Instant response between mobile and desktop
  • Cross-Platform Mobile: Flutter app works on both iOS and Android
  • Python Desktop Server: Lightweight Python application for PC control

๐Ÿ—๏ธ System Architecture

๐Ÿ“ฑ Mobile App (Flutter/Dart)  โ†โ†’  WiFi Network  โ†โ†’  ๐Ÿ–ฅ๏ธ Desktop App (Python)
        Client                                           Server

The system consists of two components:

  1. Mobile App: Flutter-based remote control interface
  2. Desktop App: Python application that receives commands and controls presentations

๐Ÿ“ฑ Screenshots

Connection Setup Remote Control Interface Presentation Navigation

๐Ÿ› ๏ธ Technologies Used

Mobile App

  • Framework: Flutter
  • Language: Dart
  • Platform: iOS & Android
  • Networking: HTTP/WebSocket for WiFi communication

Desktop App

  • Language: Python
  • Presentation Control: PyAutoGUI, python-pptx
  • Network Server: Socket programming or HTTP server
  • OS Integration: Windows/macOS/Linux compatible

๐Ÿ“‹ Prerequisites

For Mobile App

  • Flutter SDK (latest stable version)
  • Dart SDK (comes with Flutter)
  • Android Studio or Xcode for development

For Desktop App

  • Python 3.7 or higher
  • Required Python packages (see requirements.txt)
  • PowerPoint or Google Slides installed
  • Video player (VLC, Windows Media Player, etc.).

๐Ÿš€ Getting Started

Mobile App Setup

  1. Clone the repository

    git clone https://github.com/AtharIbrahim/Slide_Controller.git
    cd Slide_Controller
  2. Install Flutter dependencies

    flutter pub get
  3. Run the mobile application

    flutter run

Desktop App Setup

  1. Navigate to the Python server directory

    cd desktop_server  # or wherever your Python app is located
  2. Install Python dependencies

    pip install -r requirements.txt
  3. Run the desktop server

    python slide_controller_server.py

๐Ÿ”ง Connection Setup

Step 1: Start Desktop Server

  1. Run the Python application on your PC
  2. Note the IP address displayed (e.g., 192.168.1.100)
  3. Ensure the server is listening on the specified port

Step 2: Connect Mobile App

  1. Open the Flutter app on your mobile device
  2. Ensure your phone and PC are on the same WiFi network
  3. Enter your PC's IP address in the app
  4. Tap "Connect" to establish the connection

Step 3: Start Controlling

  • Presentations: Navigate slides forward/backward, go to specific slides
  • Videos: Play, pause, seek, volume control
  • System: Switch between different presentation software

๐Ÿ“ Project Structure

Slide_Controller/
โ”œโ”€โ”€ mobile_app/                 # Flutter mobile application
โ”‚   โ”œโ”€โ”€ lib/
โ”‚   โ”‚   โ”œโ”€โ”€ main.dart
โ”‚   โ”‚   โ”œโ”€โ”€ screens/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ connection_screen.dart
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ control_screen.dart
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ settings_screen.dart
โ”‚   โ”‚   โ”œโ”€โ”€ services/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ network_service.dart
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ command_service.dart
โ”‚   โ”‚   โ”œโ”€โ”€ widgets/
โ”‚   โ”‚   โ””โ”€โ”€ models/
โ”‚   โ”œโ”€โ”€ assets/
โ”‚   โ””โ”€โ”€ pubspec.yaml
โ”œโ”€โ”€ desktop_server/             # Python desktop application
โ”‚   โ”œโ”€โ”€ slide_controller_server.py
โ”‚   โ”œโ”€โ”€ presentation_controller.py
โ”‚   โ”œโ”€โ”€ video_controller.py
โ”‚   โ”œโ”€โ”€ network_handler.py
โ”‚   โ””โ”€โ”€ requirements.txt
โ””โ”€โ”€ README.md

๐ŸŽฎ Control Features

Presentation Controls

  • โžก๏ธ Next Slide: Move to next slide
  • โฌ…๏ธ Previous Slide: Go back to previous slide
  • ๐Ÿ  First Slide: Jump to beginning
  • ๐Ÿ”š Last Slide: Jump to end
  • ๐Ÿ”ข Go to Slide: Navigate to specific slide number
  • โธ๏ธ Pause Presentation: Pause/resume slideshow

Video Controls

  • โ–ถ๏ธ Play/Pause: Toggle video playback
  • โญ๏ธ Next: Skip to next video/chapter
  • โฎ๏ธ Previous: Go to previous video/chapter
  • ๐Ÿ”Š Volume: Increase/decrease volume
  • โฉ Seek: Fast forward/rewind

System Controls

  • ๐Ÿ–ฅ๏ธ Screen: Control display settings
  • ๐Ÿ”„ Switch App: Change between PowerPoint/Google Slides
  • ๐Ÿ“ฑ Connection Status: Monitor connection health

๐ŸŒ Network Communication

The mobile app communicates with the desktop application using:

  • Protocol: HTTP/WebSocket
  • Port: Default 8080 (configurable)
  • Commands: JSON-formatted control messages
  • Response: Status confirmations and feedback

๐Ÿค Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Development Guidelines

  • Follow Flutter/Dart best practices for mobile app
  • Follow PEP 8 for Python code
  • Test on multiple devices and operating systems
  • Document any new features or API changes

๐Ÿ› Troubleshooting

Connection Issues

  • Ensure both devices are on the same WiFi network
  • Verify the correct IP address is being used
  • Restart both applications if connection fails

Control Issues

  • Make sure presentation software is open and active
  • Check if desktop app has proper permissions
  • Verify network connectivity between devices

๐Ÿ“ License

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

๐Ÿ‘ค Author

Athar Ibrahim

๐Ÿ†˜ Support

If you encounter any issues:

  • Open an issue in this repository
  • Check the troubleshooting section above
  • Ensure you're using compatible versions of all software