diff --git a/desktop-client/main.py b/desktop-client/main.py index 1dfcdd5..0e18c90 100644 --- a/desktop-client/main.py +++ b/desktop-client/main.py @@ -24,6 +24,7 @@ class VlcSyncApp(QMainWindow): self.setMinimumSize(900, 600) self.resize(1100, 700) + self.setAcceptDrops(True) # Main stacked widget to switch between Lobby and Room self.stacked_widget = QStackedWidget() @@ -362,19 +363,38 @@ class VlcSyncApp(QMainWindow): def on_volume_changed(self, value): self.vlc_player.set_volume(value) + def _set_local_file(self, file_path: str): + self.local_file_path = file_path + self.local_file_name = os.path.basename(file_path) + self.local_file_size = os.path.getsize(file_path) + + size_mb = self.local_file_size / (1024 * 1024) + self.create_file_info.setText(f"{self.local_file_name}\n{size_mb:.1f} MB") + self.create_file_info.show() + self.check_inputs() + def select_file(self): file_path, _ = QFileDialog.getOpenFileName( self, "Select Video File", "", "Video Files (*.mp4 *.mkv *.avi *.mov *.webm);;All Files (*)" ) if file_path: - self.local_file_path = file_path - self.local_file_name = os.path.basename(file_path) - self.local_file_size = os.path.getsize(file_path) - - size_mb = self.local_file_size / (1024 * 1024) - self.create_file_info.setText(f"{self.local_file_name}\n{size_mb:.1f} MB") - self.create_file_info.show() - self.check_inputs() + self._set_local_file(file_path) + + def dragEnterEvent(self, event): + if event.mimeData().hasUrls(): + event.accept() + else: + event.ignore() + + def dropEvent(self, event): + if self.stacked_widget.currentIndex() == 0: + for url in event.mimeData().urls(): + file_path = url.toLocalFile() + if os.path.isfile(file_path): + ext = os.path.splitext(file_path)[1].lower() + if ext in ['.mp4', '.mkv', '.avi', '.mov', '.webm']: + self._set_local_file(file_path) + break def copy_room_code(self): if self.room_code: