source: smplayer/trunk/src/defaultgui.cpp@ 165

Last change on this file since 165 was 165, checked in by Silvan Scherrer, 11 years ago

SMPlayer: update trunk to latest 0.8.7

  • Property svn:eol-style set to LF
File size: 25.1 KB
Line 
1/* smplayer, GUI front-end for mplayer.
2 Copyright (C) 2006-2014 Ricardo Villalba <rvm@users.sourceforge.net>
3
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17*/
18
19#include "defaultgui.h"
20#include "helper.h"
21#include "colorutils.h"
22#include "core.h"
23#include "global.h"
24#include "widgetactions.h"
25#include "playlist.h"
26#include "mplayerwindow.h"
27#include "myaction.h"
28#include "images.h"
29#include "autohidewidget.h"
30#include "desktopinfo.h"
31#include "editabletoolbar.h"
32
33#if DOCK_PLAYLIST
34#include "playlistdock.h"
35#endif
36
37#include <QMenu>
38#include <QSettings>
39#include <QLabel>
40#include <QStatusBar>
41#include <QPushButton>
42#include <QToolButton>
43#include <QMenuBar>
44
45#define TOOLBAR_VERSION 1
46
47using namespace Global;
48
49DefaultGui::DefaultGui( QWidget * parent, Qt::WindowFlags flags )
50 : BaseGuiPlus( parent, flags )
51{
52 createStatusBar();
53
54 connect( this, SIGNAL(timeChanged(QString)),
55 this, SLOT(displayTime(QString)) );
56 connect( this, SIGNAL(frameChanged(int)),
57 this, SLOT(displayFrame(int)) );
58 connect( this, SIGNAL(ABMarkersChanged(int,int)),
59 this, SLOT(displayABSection(int,int)) );
60 connect( this, SIGNAL(videoInfoChanged(int,int,double)),
61 this, SLOT(displayVideoInfo(int,int,double)) );
62
63 createActions();
64 createMainToolBars();
65 createControlWidget();
66 createControlWidgetMini();
67 createFloatingControl();
68 createMenus();
69
70#if USE_CONFIGURABLE_TOOLBARS
71 connect( editToolbar1Act, SIGNAL(triggered()),
72 toolbar1, SLOT(edit()) );
73 connect( editControl1Act, SIGNAL(triggered()),
74 controlwidget, SLOT(edit()) );
75 connect( editControl2Act, SIGNAL(triggered()),
76 controlwidget_mini, SLOT(edit()) );
77 EditableToolbar * iw = static_cast<EditableToolbar *>(floating_control->internalWidget());
78 iw->takeAvailableActionsFrom(this);
79 connect( editFloatingControlAct, SIGNAL(triggered()),
80 iw, SLOT(edit()) );
81#endif
82
83 menuBar()->setObjectName("menubar");
84
85 retranslateStrings();
86
87 loadConfig();
88
89 //if (playlist_visible) showPlaylist(true);
90
91 if (pref->compact_mode) {
92 controlwidget->hide();
93 toolbar1->hide();
94 toolbar2->hide();
95
96 if (pref->floating_display_in_compact_mode) {
97 reconfigureFloatingControl();
98 floating_control->activate();
99 }
100 }
101}
102
103DefaultGui::~DefaultGui() {
104 qDebug("DefaultGui::~DefaultGui");
105 saveConfig();
106}
107
108/*
109void DefaultGui::closeEvent( QCloseEvent * ) {
110 qDebug("DefaultGui::closeEvent");
111
112 //BaseGuiPlus::closeEvent(e);
113 qDebug("w: %d h: %d", width(), height() );
114}
115*/
116
117void DefaultGui::createActions() {
118 qDebug("DefaultGui::createActions");
119
120 timeslider_action = createTimeSliderAction(this);
121 timeslider_action->disable();
122
123 volumeslider_action = createVolumeSliderAction(this);
124 volumeslider_action->disable();
125
126 // Create the time label
127 time_label_action = new TimeLabelAction(this);
128 time_label_action->setObjectName("timelabel_action");
129
130#if MINI_ARROW_BUTTONS
131 QList<QAction*> rewind_actions;
132 rewind_actions << rewind1Act << rewind2Act << rewind3Act;
133 rewindbutton_action = new SeekingButton(rewind_actions, this);
134 rewindbutton_action->setObjectName("rewindbutton_action");
135
136 QList<QAction*> forward_actions;
137 forward_actions << forward1Act << forward2Act << forward3Act;
138 forwardbutton_action = new SeekingButton(forward_actions, this);
139 forwardbutton_action->setObjectName("forwardbutton_action");
140#endif
141
142 // Statusbar
143 viewVideoInfoAct = new MyAction(this, "toggle_video_info" );
144 viewVideoInfoAct->setCheckable(true);
145 connect( viewVideoInfoAct, SIGNAL(toggled(bool)),
146 video_info_display, SLOT(setVisible(bool)) );
147
148 viewFrameCounterAct = new MyAction( this, "toggle_frame_counter" );
149 viewFrameCounterAct->setCheckable( true );
150 connect( viewFrameCounterAct, SIGNAL(toggled(bool)),
151 frame_display, SLOT(setVisible(bool)) );
152
153#if USE_CONFIGURABLE_TOOLBARS
154 editToolbar1Act = new MyAction( this, "edit_main_toolbar" );
155 editControl1Act = new MyAction( this, "edit_control1" );
156 editControl2Act = new MyAction( this, "edit_control2" );
157 editFloatingControlAct = new MyAction( this, "edit_floating_control" );
158#endif
159}
160
161#if AUTODISABLE_ACTIONS
162void DefaultGui::enableActionsOnPlaying() {
163 qDebug("DefaultGui::enableActionsOnPlaying");
164 BaseGuiPlus::enableActionsOnPlaying();
165
166 timeslider_action->enable();
167 volumeslider_action->enable();
168}
169
170void DefaultGui::disableActionsOnStop() {
171 qDebug("DefaultGui::disableActionsOnStop");
172 BaseGuiPlus::disableActionsOnStop();
173
174 timeslider_action->disable();
175 volumeslider_action->disable();
176}
177#endif // AUTODISABLE_ACTIONS
178
179void DefaultGui::createMenus() {
180 toolbar_menu = new QMenu(this);
181 toolbar_menu->addAction(toolbar1->toggleViewAction());
182 toolbar_menu->addAction(toolbar2->toggleViewAction());
183#if USE_CONFIGURABLE_TOOLBARS
184 toolbar_menu->addSeparator();
185 toolbar_menu->addAction(editToolbar1Act);
186 toolbar_menu->addAction(editControl1Act);
187 toolbar_menu->addAction(editControl2Act);
188 toolbar_menu->addAction(editFloatingControlAct);
189#endif
190 optionsMenu->addSeparator();
191 optionsMenu->addMenu(toolbar_menu);
192
193 statusbar_menu = new QMenu(this);
194 statusbar_menu->addAction(viewVideoInfoAct);
195 statusbar_menu->addAction(viewFrameCounterAct);
196
197 optionsMenu->addMenu(statusbar_menu);
198}
199
200QMenu * DefaultGui::createPopupMenu() {
201 QMenu * m = new QMenu(this);
202#if USE_CONFIGURABLE_TOOLBARS
203 m->addAction(editToolbar1Act);
204 m->addAction(editControl1Act);
205 m->addAction(editControl2Act);
206 m->addAction(editFloatingControlAct);
207#else
208 m->addAction(toolbar1->toggleViewAction());
209 m->addAction(toolbar2->toggleViewAction());
210#endif
211 return m;
212}
213
214void DefaultGui::createMainToolBars() {
215 toolbar1 = new EditableToolbar( this );
216 toolbar1->setObjectName("toolbar1");
217 //toolbar1->setMovable(false);
218 addToolBar(Qt::TopToolBarArea, toolbar1);
219#if USE_CONFIGURABLE_TOOLBARS
220 QStringList toolbar1_actions;
221 toolbar1_actions << "open_file" << "open_url" << "favorites_menu" << "separator"
222 << "screenshot" << "separator" << "show_file_properties" << "show_playlist"
223 << "show_tube_browser" << "separator" << "show_preferences"
224 << "separator" << "play_prev" << "play_next";
225
226 toolbar1->setDefaultActions(toolbar1_actions);
227#else
228 toolbar1->addAction(openFileAct);
229 toolbar1->addAction(openDVDAct);
230 toolbar1->addAction(openURLAct);
231 toolbar1->addSeparator();
232 toolbar1->addAction(compactAct);
233 toolbar1->addAction(fullscreenAct);
234 toolbar1->addSeparator();
235 toolbar1->addAction(screenshotAct);
236 toolbar1->addSeparator();
237 toolbar1->addAction(showPropertiesAct);
238 toolbar1->addAction(showPlaylistAct);
239 toolbar1->addAction(showPreferencesAct);
240 toolbar1->addSeparator();
241 toolbar1->addAction(playPrevAct);
242 toolbar1->addAction(playNextAct);
243 // Test:
244 //toolbar1->addSeparator();
245 //toolbar1->addAction(timeslider_action);
246 //toolbar1->addAction(volumeslider_action);
247#endif
248
249 toolbar2 = new QToolBar( this );
250 toolbar2->setObjectName("toolbar2");
251 //toolbar2->setMovable(false);
252 addToolBar(Qt::TopToolBarArea, toolbar2);
253
254 select_audio = new QPushButton( this );
255 select_audio->setMenu( audiotrack_menu );
256 toolbar2->addWidget(select_audio);
257
258 select_subtitle = new QPushButton( this );
259 select_subtitle->setMenu( subtitlestrack_menu );
260 toolbar2->addWidget(select_subtitle);
261
262 /*
263 toolbar1->show();
264 toolbar2->show();
265 */
266
267 // Modify toolbars' actions
268 QAction *tba;
269 tba = toolbar1->toggleViewAction();
270 tba->setObjectName("show_main_toolbar");
271 tba->setShortcut(Qt::Key_F5);
272
273 tba = toolbar2->toggleViewAction();
274 tba->setObjectName("show_language_toolbar");
275 tba->setShortcut(Qt::Key_F6);
276}
277
278
279void DefaultGui::createControlWidgetMini() {
280 qDebug("DefaultGui::createControlWidgetMini");
281
282 controlwidget_mini = new EditableToolbar( this );
283 controlwidget_mini->setObjectName("controlwidget_mini");
284 controlwidget_mini->setLayoutDirection(Qt::LeftToRight);
285 //controlwidget_mini->setResizeEnabled(false);
286 controlwidget_mini->setMovable(false);
287 //addDockWindow(controlwidget_mini, Qt::DockBottom );
288 addToolBar(Qt::BottomToolBarArea, controlwidget_mini);
289
290#if USE_CONFIGURABLE_TOOLBARS
291 QStringList controlwidget_mini_actions;
292 controlwidget_mini_actions << "play_or_pause" << "stop" << "separator" << "rewind1" << "timeslider_action"
293 << "forward1" << "separator" << "mute" << "volumeslider_action";
294 controlwidget_mini->setDefaultActions(controlwidget_mini_actions);
295#else
296 controlwidget_mini->addAction(playOrPauseAct);
297 controlwidget_mini->addAction(stopAct);
298 controlwidget_mini->addSeparator();
299
300 controlwidget_mini->addAction(rewind1Act);
301
302 controlwidget_mini->addAction(timeslider_action);
303
304 controlwidget_mini->addAction(forward1Act);
305
306 controlwidget_mini->addSeparator();
307
308 controlwidget_mini->addAction(muteAct );
309
310 controlwidget_mini->addAction(volumeslider_action);
311#endif // USE_CONFIGURABLE_TOOLBARS
312
313 controlwidget_mini->hide();
314}
315
316void DefaultGui::createControlWidget() {
317 qDebug("DefaultGui::createControlWidget");
318
319 controlwidget = new EditableToolbar( this );
320 controlwidget->setObjectName("controlwidget");
321 controlwidget->setLayoutDirection(Qt::LeftToRight);
322 //controlwidget->setResizeEnabled(false);
323 controlwidget->setMovable(false);
324 //addDockWindow(controlwidget, Qt::DockBottom );
325 addToolBar(Qt::BottomToolBarArea, controlwidget);
326
327#if USE_CONFIGURABLE_TOOLBARS
328 QStringList controlwidget_actions;
329 controlwidget_actions << "play" << "pause_and_frame_step" << "stop" << "separator";
330 #if MINI_ARROW_BUTTONS
331 controlwidget_actions << "rewindbutton_action";
332 #else
333 controlwidget_actions << "rewind3" << "rewind2" << "rewind1";
334 #endif
335 controlwidget_actions << "timeslider_action";
336 #if MINI_ARROW_BUTTONS
337 controlwidget_actions << "forwardbutton_action";
338 #else
339 controlwidget_actions << "forward1" << "forward2" << "forward3";
340 #endif
341 controlwidget_actions << "separator" << "fullscreen" << "mute" << "volumeslider_action";
342 controlwidget->setDefaultActions(controlwidget_actions);
343#else
344 controlwidget->addAction(playAct);
345 controlwidget->addAction(pauseAndStepAct);
346 controlwidget->addAction(stopAct);
347
348 controlwidget->addSeparator();
349
350 #if MINI_ARROW_BUTTONS
351 controlwidget->addAction( rewindbutton_action );
352 #else
353 controlwidget->addAction(rewind3Act);
354 controlwidget->addAction(rewind2Act);
355 controlwidget->addAction(rewind1Act);
356 #endif
357
358 controlwidget->addAction(timeslider_action);
359
360 #if MINI_ARROW_BUTTONS
361 controlwidget->addAction( forwardbutton_action );
362 #else
363 controlwidget->addAction(forward1Act);
364 controlwidget->addAction(forward2Act);
365 controlwidget->addAction(forward3Act);
366 #endif
367
368 controlwidget->addSeparator();
369
370 controlwidget->addAction(fullscreenAct);
371 controlwidget->addAction(muteAct);
372
373 controlwidget->addAction(volumeslider_action);
374#endif // USE_CONFIGURABLE_TOOLBARS
375
376 /*
377 controlwidget->show();
378 */
379}
380
381void DefaultGui::createFloatingControl() {
382 // Floating control
383 floating_control = new AutohideWidget(panel);
384 floating_control->setAutoHide(true);
385
386 EditableToolbar * iw = new EditableToolbar(floating_control);
387 iw->setObjectName("floating_control");
388
389#if USE_CONFIGURABLE_TOOLBARS
390 QStringList floatingcontrol_actions;
391 floatingcontrol_actions << "play" << "pause" << "stop" << "separator";
392 #if MINI_ARROW_BUTTONS
393 floatingcontrol_actions << "rewindbutton_action";
394 #else
395 floatingcontrol_actions << "rewind3" << "rewind2" << "rewind1";
396 #endif
397 floatingcontrol_actions << "timeslider_action";
398 #if MINI_ARROW_BUTTONS
399 floatingcontrol_actions << "forwardbutton_action";
400 #else
401 floatingcontrol_actions << "forward1" << "forward2" << "forward3";
402 #endif
403 floatingcontrol_actions << "separator" << "fullscreen" << "mute" << "volumeslider_action" << "separator" << "timelabel_action";
404 iw->setDefaultActions(floatingcontrol_actions);
405#else
406 iw->addAction(playAct);
407 iw->addAction(pauseAct);
408 iw->addAction(stopAct);
409 iw->addSeparator();
410
411 #if MINI_ARROW_BUTTONS
412 iw->addAction( rewindbutton_action );
413 #else
414 iw->addAction(rewind3Act);
415 iw->addAction(rewind2Act);
416 iw->addAction(rewind1Act);
417 #endif
418
419 iw->addAction(timeslider_action);
420
421 #if MINI_ARROW_BUTTONS
422 iw->addAction( forwardbutton_action );
423 #else
424 iw->addAction(forward1Act);
425 iw->addAction(forward2Act);
426 iw->addAction(forward3Act);
427 #endif
428
429 iw->addSeparator();
430 iw->addAction(fullscreenAct);
431 iw->addAction(muteAct);
432 iw->addAction(volumeslider_action);
433 iw->addSeparator();
434 iw->addAction(time_label_action);
435#endif // USE_CONFIGURABLE_TOOLBARS
436
437 floating_control->setInternalWidget(iw);
438
439#if defined(Q_OS_WIN) || defined(Q_OS_OS2)
440 // To make work the ESC key (exit fullscreen) and Ctrl-X (close) in Windows and OS2
441 /*
442 floating_control->addAction(exitFullscreenAct);
443 floating_control->addAction(exitAct);
444 */
445 //floating_control->addActions(actions());
446#endif
447
448#if !USE_CONFIGURABLE_TOOLBARS
449 floating_control->adjustSize();
450#endif
451
452 floating_control->hide();
453}
454
455void DefaultGui::createStatusBar() {
456 qDebug("DefaultGui::createStatusBar");
457
458 time_display = new QLabel( statusBar() );
459 time_display->setObjectName("time_display");
460 time_display->setAlignment(Qt::AlignRight);
461 time_display->setFrameShape(QFrame::NoFrame);
462 time_display->setText(" 88:88:88 / 88:88:88 ");
463 time_display->setMinimumSize(time_display->sizeHint());
464
465 frame_display = new QLabel( statusBar() );
466 frame_display->setObjectName("frame_display");
467 frame_display->setAlignment(Qt::AlignRight);
468 frame_display->setFrameShape(QFrame::NoFrame);
469 frame_display->setText("88888888");
470 frame_display->setMinimumSize(frame_display->sizeHint());
471
472 ab_section_display = new QLabel( statusBar() );
473 ab_section_display->setObjectName("ab_section_display");
474 ab_section_display->setAlignment(Qt::AlignRight);
475 ab_section_display->setFrameShape(QFrame::NoFrame);
476// ab_section_display->setText("A:0:00:00 B:0:00:00");
477// ab_section_display->setMinimumSize(ab_section_display->sizeHint());
478
479 video_info_display = new QLabel( statusBar() );
480 video_info_display->setObjectName("video_info_display");
481 video_info_display->setAlignment(Qt::AlignRight);
482 video_info_display->setFrameShape(QFrame::NoFrame);
483
484 statusBar()->setAutoFillBackground(true);
485
486 ColorUtils::setBackgroundColor( statusBar(), QColor(0,0,0) );
487 ColorUtils::setForegroundColor( statusBar(), QColor(255,255,255) );
488 ColorUtils::setBackgroundColor( time_display, QColor(0,0,0) );
489 ColorUtils::setForegroundColor( time_display, QColor(255,255,255) );
490 ColorUtils::setBackgroundColor( frame_display, QColor(0,0,0) );
491 ColorUtils::setForegroundColor( frame_display, QColor(255,255,255) );
492 ColorUtils::setBackgroundColor( ab_section_display, QColor(0,0,0) );
493 ColorUtils::setForegroundColor( ab_section_display, QColor(255,255,255) );
494 ColorUtils::setBackgroundColor( video_info_display, QColor(0,0,0) );
495 ColorUtils::setForegroundColor( video_info_display, QColor(255,255,255) );
496 statusBar()->setSizeGripEnabled(false);
497
498 statusBar()->addPermanentWidget( video_info_display );
499 statusBar()->addPermanentWidget( ab_section_display );
500
501 statusBar()->showMessage( tr("Welcome to SMPlayer") );
502 statusBar()->addPermanentWidget( frame_display, 0 );
503 frame_display->setText( "0" );
504
505 statusBar()->addPermanentWidget( time_display, 0 );
506 time_display->setText(" 00:00:00 / 00:00:00 ");
507
508 time_display->show();
509 frame_display->hide();
510 ab_section_display->show();
511 video_info_display->hide();
512}
513
514void DefaultGui::retranslateStrings() {
515 BaseGuiPlus::retranslateStrings();
516
517 toolbar_menu->menuAction()->setText( tr("&Toolbars") );
518 toolbar_menu->menuAction()->setIcon( Images::icon("toolbars") );
519
520 statusbar_menu->menuAction()->setText( tr("Status&bar") );
521 statusbar_menu->menuAction()->setIcon( Images::icon("statusbar") );
522
523 toolbar1->setWindowTitle( tr("&Main toolbar") );
524 toolbar1->toggleViewAction()->setIcon(Images::icon("main_toolbar"));
525
526 toolbar2->setWindowTitle( tr("&Language toolbar") );
527 toolbar2->toggleViewAction()->setIcon(Images::icon("lang_toolbar"));
528
529 select_audio->setText( tr("Audio") );
530 select_subtitle->setText( tr("Subtitle") );
531
532 viewVideoInfoAct->change(Images::icon("view_video_info"), tr("&Video info") );
533 viewFrameCounterAct->change( Images::icon("frame_counter"), tr("&Frame counter") );
534
535#if USE_CONFIGURABLE_TOOLBARS
536 editToolbar1Act->change( tr("Edit main &toolbar") );
537 editControl1Act->change( tr("Edit &control bar") );
538 editControl2Act->change( tr("Edit m&ini control bar") );
539 editFloatingControlAct->change( tr("Edit &floating control") );
540#endif
541}
542
543
544void DefaultGui::displayTime(QString text) {
545 time_display->setText( text );
546 time_label_action->setText(text);
547}
548
549void DefaultGui::displayFrame(int frame) {
550 if (frame_display->isVisible()) {
551 frame_display->setNum( frame );
552 }
553}
554
555void DefaultGui::displayABSection(int secs_a, int secs_b) {
556 QString s;
557 if (secs_a > -1) s = tr("A:%1").arg(Helper::formatTime(secs_a));
558
559 if (secs_b > -1) {
560 if (!s.isEmpty()) s += " ";
561 s += tr("B:%1").arg(Helper::formatTime(secs_b));
562 }
563
564 ab_section_display->setText( s );
565
566 ab_section_display->setVisible( !s.isEmpty() );
567}
568
569void DefaultGui::displayVideoInfo(int width, int height, double fps) {
570 if ((width != 0) && (height != 0)) {
571 video_info_display->setText(tr("%1x%2 %3 fps", "width + height + fps").arg(width).arg(height).arg(fps));
572 } else {
573 video_info_display->setText(" ");
574 }
575}
576
577void DefaultGui::updateWidgets() {
578 qDebug("DefaultGui::updateWidgets");
579
580 BaseGuiPlus::updateWidgets();
581
582 panel->setFocus();
583}
584
585void DefaultGui::applyNewPreferences() {
586 qDebug("DefaultGui::applyNewPreferences");
587
588 if ((pref->compact_mode) && (pref->floating_display_in_compact_mode)) {
589 reconfigureFloatingControl();
590 floating_control->activate();
591 } else {
592 floating_control->deactivate();
593 }
594
595 BaseGuiPlus::applyNewPreferences();
596}
597
598void DefaultGui::reconfigureFloatingControl() {
599 floating_control->setMargin(pref->floating_control_margin);
600 floating_control->setPercWidth(pref->floating_control_width);
601 floating_control->setAnimated(pref->floating_control_animated);
602 floating_control->setActivationArea( (AutohideWidget::Activation) pref->floating_activation_area);
603 floating_control->setHideDelay(pref->floating_hide_delay);
604}
605
606void DefaultGui::aboutToEnterFullscreen() {
607 qDebug("DefaultGui::aboutToEnterFullscreen");
608
609 BaseGuiPlus::aboutToEnterFullscreen();
610
611 // Show floating_control
612 reconfigureFloatingControl();
613 floating_control->deactivate(); // Hide the control in case it was running from compact mode
614 QTimer::singleShot(500, floating_control, SLOT(activate()));
615
616
617 // Save visibility of toolbars
618 fullscreen_toolbar1_was_visible = toolbar1->isVisible();
619 fullscreen_toolbar2_was_visible = toolbar2->isVisible();
620
621 if (!pref->compact_mode) {
622 //menuBar()->hide();
623 //statusBar()->hide();
624 controlwidget->hide();
625 controlwidget_mini->hide();
626 toolbar1->hide();
627 toolbar2->hide();
628 }
629}
630
631void DefaultGui::aboutToExitFullscreen() {
632 qDebug("DefaultGui::aboutToExitFullscreen");
633
634 BaseGuiPlus::aboutToExitFullscreen();
635
636 // Hide floating_control
637 if (!pref->compact_mode || !pref->floating_display_in_compact_mode) {
638 floating_control->deactivate();
639 }
640
641 if (!pref->compact_mode) {
642 //menuBar()->show();
643 //statusBar()->show();
644 controlwidget->show();
645
646 toolbar1->setVisible( fullscreen_toolbar1_was_visible );
647 toolbar2->setVisible( fullscreen_toolbar2_was_visible );
648 }
649}
650
651void DefaultGui::aboutToEnterCompactMode() {
652
653 BaseGuiPlus::aboutToEnterCompactMode();
654
655 // Show floating_control
656 if (pref->floating_display_in_compact_mode) {
657 reconfigureFloatingControl();
658 QTimer::singleShot(500, floating_control, SLOT(activate()));
659 }
660
661
662 // Save visibility of toolbars
663 compact_toolbar1_was_visible = toolbar1->isVisible();
664 compact_toolbar2_was_visible = toolbar2->isVisible();
665
666 //menuBar()->hide();
667 //statusBar()->hide();
668 controlwidget->hide();
669 controlwidget_mini->hide();
670 toolbar1->hide();
671 toolbar2->hide();
672}
673
674void DefaultGui::aboutToExitCompactMode() {
675 BaseGuiPlus::aboutToExitCompactMode();
676
677 // Hide floating_control
678 if (pref->floating_display_in_compact_mode) {
679 floating_control->deactivate();
680 }
681
682 //menuBar()->show();
683 //statusBar()->show();
684 controlwidget->show();
685
686 toolbar1->setVisible( compact_toolbar1_was_visible );
687 toolbar2->setVisible( compact_toolbar2_was_visible );
688
689 // Recheck size of controlwidget
690 resizeEvent( new QResizeEvent( size(), size() ) );
691}
692
693void DefaultGui::resizeEvent( QResizeEvent * ) {
694 /*
695 qDebug("defaultGui::resizeEvent");
696 qDebug(" controlwidget width: %d", controlwidget->width() );
697 qDebug(" controlwidget_mini width: %d", controlwidget_mini->width() );
698 */
699
700#if QT_VERSION < 0x040000
701#define LIMIT 470
702#else
703#define LIMIT 570
704#endif
705
706 if ( (controlwidget->isVisible()) && (width() < LIMIT) ) {
707 controlwidget->hide();
708 controlwidget_mini->show();
709 }
710 else
711 if ( (controlwidget_mini->isVisible()) && (width() > LIMIT) ) {
712 controlwidget_mini->hide();
713 controlwidget->show();
714 }
715}
716
717#if USE_MINIMUMSIZE
718QSize DefaultGui::minimumSizeHint() const {
719 return QSize(controlwidget_mini->sizeHint().width(), 0);
720}
721#endif
722
723
724void DefaultGui::saveConfig() {
725 qDebug("DefaultGui::saveConfig");
726
727 QSettings * set = settings;
728
729 set->beginGroup( "default_gui");
730
731 set->setValue("video_info", viewVideoInfoAct->isChecked());
732 set->setValue("frame_counter", viewFrameCounterAct->isChecked());
733
734 set->setValue("fullscreen_toolbar1_was_visible", fullscreen_toolbar1_was_visible);
735 set->setValue("fullscreen_toolbar2_was_visible", fullscreen_toolbar2_was_visible);
736 set->setValue("compact_toolbar1_was_visible", compact_toolbar1_was_visible);
737 set->setValue("compact_toolbar2_was_visible", compact_toolbar2_was_visible);
738
739 if (pref->save_window_size_on_exit) {
740 qDebug("DefaultGui::saveConfig: w: %d h: %d", width(), height());
741 set->setValue( "pos", pos() );
742 set->setValue( "size", size() );
743 set->setValue( "state", (int) windowState() );
744 }
745
746 set->setValue( "toolbars_state", saveState(Helper::qtVersion()) );
747
748#if USE_CONFIGURABLE_TOOLBARS
749 set->beginGroup( "actions" );
750 set->setValue("toolbar1", toolbar1->actionsToStringList() );
751 set->setValue("controlwidget", controlwidget->actionsToStringList() );
752 set->setValue("controlwidget_mini", controlwidget_mini->actionsToStringList() );
753 EditableToolbar * iw = static_cast<EditableToolbar *>(floating_control->internalWidget());
754 set->setValue("floating_control", iw->actionsToStringList() );
755 set->setValue("toolbar1_version", TOOLBAR_VERSION);
756 set->endGroup();
757#endif
758
759 set->endGroup();
760}
761
762void DefaultGui::loadConfig() {
763 qDebug("DefaultGui::loadConfig");
764
765 QSettings * set = settings;
766
767 set->beginGroup( "default_gui");
768
769 viewVideoInfoAct->setChecked(set->value("video_info", false).toBool());
770 viewFrameCounterAct->setChecked(set->value("frame_counter", false).toBool());
771
772 fullscreen_toolbar1_was_visible = set->value("fullscreen_toolbar1_was_visible", fullscreen_toolbar1_was_visible).toBool();
773 fullscreen_toolbar2_was_visible = set->value("fullscreen_toolbar2_was_visible", fullscreen_toolbar2_was_visible).toBool();
774 compact_toolbar1_was_visible = set->value("compact_toolbar1_was_visible", compact_toolbar1_was_visible).toBool();
775 compact_toolbar2_was_visible = set->value("compact_toolbar2_was_visible", compact_toolbar2_was_visible).toBool();
776
777 if (pref->save_window_size_on_exit) {
778 QPoint p = set->value("pos", pos()).toPoint();
779 QSize s = set->value("size", size()).toSize();
780
781 if ( (s.height() < 200) && (!pref->use_mplayer_window) ) {
782 s = pref->default_size;
783 }
784
785 move(p);
786 resize(s);
787
788 setWindowState( (Qt::WindowStates) set->value("state", 0).toInt() );
789
790 if (!DesktopInfo::isInsideScreen(this)) {
791 move(0,0);
792 qWarning("DefaultGui::loadConfig: window is outside of the screen, moved to 0x0");
793 }
794 }
795
796#if USE_CONFIGURABLE_TOOLBARS
797 set->beginGroup( "actions" );
798 int toolbar_version = set->value("toolbar1_version", 0).toInt();
799 if (toolbar_version >= TOOLBAR_VERSION) {
800 toolbar1->setActionsFromStringList( set->value("toolbar1", toolbar1->defaultActions()).toStringList() );
801 } else {
802 qDebug("DefaultGui::loadConfig: toolbar too old, loading default one");
803 toolbar1->setActionsFromStringList( toolbar1->defaultActions() );
804 }
805 controlwidget->setActionsFromStringList( set->value("controlwidget", controlwidget->defaultActions()).toStringList() );
806 controlwidget_mini->setActionsFromStringList( set->value("controlwidget_mini", controlwidget_mini->defaultActions()).toStringList() );
807 EditableToolbar * iw = static_cast<EditableToolbar *>(floating_control->internalWidget());
808 iw->setActionsFromStringList( set->value("floating_control", iw->defaultActions()).toStringList() );
809 floating_control->adjustSize();
810 set->endGroup();
811#endif
812
813 restoreState( set->value( "toolbars_state" ).toByteArray(), Helper::qtVersion() );
814
815#if DOCK_PLAYLIST
816 qDebug("DefaultGui::loadConfig: playlist visible: %d", playlistdock->isVisible());
817 qDebug("DefaultGui::loadConfig: playlist position: %d, %d", playlistdock->pos().x(), playlistdock->pos().y());
818 qDebug("DefaultGui::loadConfig: playlist size: %d x %d", playlistdock->size().width(), playlistdock->size().height());
819#endif
820
821 set->endGroup();
822
823 updateWidgets();
824}
825
826#include "moc_defaultgui.cpp"
Note: See TracBrowser for help on using the repository browser.