diff --git a/desktop-client/check.svg b/desktop-client/check.svg new file mode 100644 index 0000000..2b04c57 --- /dev/null +++ b/desktop-client/check.svg @@ -0,0 +1,3 @@ + + + diff --git a/desktop-client/copy.svg b/desktop-client/copy.svg new file mode 100644 index 0000000..eff887d --- /dev/null +++ b/desktop-client/copy.svg @@ -0,0 +1,4 @@ + + + + diff --git a/desktop-client/main.py b/desktop-client/main.py index 606d62e..9aa53f8 100644 --- a/desktop-client/main.py +++ b/desktop-client/main.py @@ -168,7 +168,11 @@ class VlcSyncApp(QMainWindow): topbar_layout = QHBoxLayout(self.topbar) self.room_code_display = QLabel("Room: XXXX") - self.copy_code_btn = QPushButton("📋") + self.copy_code_btn = QPushButton() + self.copy_code_btn.setObjectName("iconBtn") + self.copy_icon = QIcon(os.path.join(os.path.dirname(__file__), "copy.svg")) + self.check_icon = QIcon(os.path.join(os.path.dirname(__file__), "check.svg")) + self.copy_code_btn.setIcon(self.copy_icon) self.copy_code_btn.setFixedSize(30, 30) self.copy_code_btn.setToolTip("Copy Room Code") self.copy_code_btn.clicked.connect(self.copy_room_code) @@ -225,7 +229,7 @@ class VlcSyncApp(QMainWindow): # Fullscreen self.fullscreen_btn = QPushButton("⛶") self.fullscreen_btn.setFixedSize(40, 40) - self.fullscreen_btn.setObjectName("fullscreenBtn") + self.fullscreen_btn.setObjectName("iconBtn") self.fullscreen_btn.clicked.connect(self.toggle_fullscreen) controls_layout.addWidget(self.play_btn) @@ -373,8 +377,23 @@ class VlcSyncApp(QMainWindow): def copy_room_code(self): if self.room_code: QApplication.clipboard().setText(self.room_code) - self.copy_code_btn.setText("✓") - QTimer.singleShot(2000, lambda: self.copy_code_btn.setText("📋")) + self.copy_code_btn.setIcon(self.check_icon) + + # Show floating tooltip for feedback + toast = QLabel("Copied!", self) + toast.setStyleSheet("background-color: #4BB543; color: white; padding: 4px 8px; border-radius: 4px; font-weight: bold;") + toast.setWindowFlags(Qt.WindowType.ToolTip | Qt.WindowType.FramelessWindowHint) + + # Position the toast slightly below the button + pos = self.copy_code_btn.mapToGlobal(self.copy_code_btn.rect().bottomLeft()) + toast.move(pos.x(), pos.y() + 5) + toast.show() + + def reset(): + self.copy_code_btn.setIcon(self.copy_icon) + toast.deleteLater() + + QTimer.singleShot(1500, reset) def check_inputs(self): has_name = len(self.username_input.text().strip()) > 0 @@ -610,6 +629,7 @@ class VlcSyncApp(QMainWindow): color: #aaaaaa; font-weight: bold; font-size: 12px; + background-color: transparent; } #fileInfo { @@ -639,6 +659,16 @@ class VlcSyncApp(QMainWindow): padding: 10px 16px; font-weight: bold; font-size: 14px; + background-color: #272727; + color: white; + border: 1px solid #444; + } + QPushButton:hover { + background-color: #333; + } + QPushButton:disabled { + border-color: #222; + color: #666; } #primaryBtn { @@ -654,17 +684,13 @@ class VlcSyncApp(QMainWindow): color: #666; } - #secondaryBtn { - background-color: #272727; - color: white; - border: 1px solid #444; + #iconBtn { + background-color: transparent; + border: none; + padding: 5px; } - #secondaryBtn:hover { - background-color: #333; - } - #secondaryBtn:disabled { - border-color: #222; - color: #666; + #iconBtn:hover { + background-color: rgba(255, 255, 255, 0.1); } #dangerBtn {