Ignore:
Timestamp:
Aug 31, 2016, 5:19:25 PM (9 years ago)
Author:
Silvan Scherrer
Message:

smplayer: update vendor to version 16.8.0

File:
1 edited

Legend:

Unmodified
Added
Removed
  • smplayer/vendor/current/src/basegui.cpp

    r175 r179  
    5656#include "timeslider.h"
    5757#include "logwindow.h"
     58
    5859#include "playlist.h"
    5960#include "filepropertiesdialog.h"
     
    9091#include "actionseditor.h"
    9192
     93
    9294#include "tvlist.h"
     95
     96
     97
    9398
    9499#include "preferencesdialog.h"
    95 #ifndef NO_USE_INI_FILES
    96100#include "prefgeneral.h"
    97 #endif
    98101#include "prefinterface.h"
    99102#include "prefinput.h"
     
    147150BaseGui::BaseGui( QWidget* parent, Qt::WindowFlags flags )
    148151        : QMainWindow( parent, flags )
    149 #if QT_VERSION >= 0x050000
     152#if
    150153        , was_minimized(false)
     154
     155
     156
     157
     158
     159
     160
     161
     162
     163
    151164#endif
    152165#ifdef UPDATE_CHECKER
    153166        , update_checker(0)
    154167#endif
     168
     169
    155170#ifdef MG_DELAYED_SEEK
    156171        , delayed_seek_timer(0)
    157172        , delayed_seek_value(0)
    158173#endif
     174
     175
     176
     177
     178
    159179{
    160 #if defined(Q_OS_WIN) || defined(Q_OS_OS2)
    161 #ifdef AVOID_SCREENSAVER
    162         /* Disable screensaver by event */
    163         just_stopped = false;
    164 #endif
    165 #endif
    166         ignore_show_hide_events = false;
    167 
    168         arg_close_on_finish = -1;
    169         arg_start_in_fullscreen = -1;
    170 
    171180        setWindowTitle( "SMPlayer" );
    172 
    173         // Not created objects
    174         popup = 0;
    175         pref_dialog = 0;
    176         file_dialog = 0;
    177         clhelp_window = 0;
    178 #ifdef FIND_SUBTITLES
    179         find_subs_dialog = 0;
    180 #endif
    181 #ifdef VIDEOPREVIEW
    182         video_preview = 0;
    183 #endif
    184181
    185182        // Create objects:
     
    208205        qApp->setStyleSheet("");
    209206        default_style = qApp->style()->objectName();
     207
    210208        #ifdef Q_OS_LINUX
    211209        // Some controls aren't displayed correctly with the adwaita style
     
    248246
    249247        setupNetworkProxy();
    250         initializeGui();
     248
     249        /* Initialize GUI */
     250        if (pref->compact_mode) toggleCompactMode(true);
     251        changeStayOnTop(pref->stay_on_top);
     252        updateRecents();
     253        QTimer::singleShot(20, this, SLOT(loadActions()));
    251254
    252255#ifdef UPDATE_CHECKER
     
    265268        if (pref->use_mpris2) new Mpris2(this, this);
    266269#endif
    267 }
    268 
    269 void BaseGui::initializeGui() {
    270         if (pref->compact_mode) toggleCompactMode(true);
    271         changeStayOnTop(pref->stay_on_top);
    272 
    273         updateRecents();
    274 
    275         // Call loadActions() outside initialization of the class.
    276         // Otherwise DefaultGui (and other subclasses) doesn't exist, and
    277         // its actions are not loaded
    278         QTimer::singleShot(20, this, SLOT(loadActions()));
    279 
    280         // Single instance
    281         /* Deleted */
    282270}
    283271
     
    363351
    364352        delete favorites;
     353
     354
    365355        delete tvlist;
    366356        delete radiolist;
     357
    367358
    368359//#if !DOCK_PLAYLIST
     
    385376        }
    386377#endif
     378
     379
     380
     381
    387382}
    388383
     
    450445
    451446        // TV and Radio
     447
    452448        tvlist = new TVList(pref->check_channels_conf_on_startup,
    453449                        TVList::TV, Paths::configPath() + "/tv.m3u8", this);
     
    483479        connect(core, SIGNAL(mediaPlaying(const QString &, const QString &)),
    484480            radiolist, SLOT(getCurrentMedia(const QString &, const QString &)));
     481
    485482
    486483
     
    877874             this, SLOT(showLog()) );
    878875#endif
     876
     877
     878
     879
     880
    879881
    880882        // Menu Help
     
    16041606
    16051607#ifdef BOOKMARKS
    1606         if (pref->dont_remember_media_settings || core->mdat.type != TYPE_FILE) {
    1607                 addBookmarkAct->setEnabled(false);
    1608                 editBookmarksAct->setEnabled(false);
    1609         } else {
    1610                 addBookmarkAct->setEnabled(true);
    1611                 editBookmarksAct->setEnabled(true);
    1612         }
     1608        bool bookmarks_enabled = true;
     1609        if (!pref->remember_media_settings) bookmarks_enabled = false;
     1610        else
     1611        if (core->mdat.type == TYPE_STREAM && !pref->remember_stream_settings) bookmarks_enabled = false;
     1612        else
     1613        if (core->mdat.type != TYPE_FILE && core->mdat.type != TYPE_STREAM) bookmarks_enabled = false;
     1614
     1615        addBookmarkAct->setEnabled(bookmarks_enabled);
     1616        editBookmarksAct->setEnabled(bookmarks_enabled);
    16131617#endif
    16141618}
     
    18121816        // Menu Options
    18131817        showPlaylistAct->change( Images::icon("playlist"), tr("&Playlist") );
    1814         showPropertiesAct->change( Images::icon("info"), tr("View &info and properties...") );
     1818        showPropertiesAct->change( Images::icon("info"), tr(" and properties...") );
    18151819        showPreferencesAct->change( Images::icon("prefs"), tr("P&references") );
    18161820#ifdef YOUTUBE_SUPPORT
     
    18201824        // Submenu Logs
    18211825#ifdef LOG_MPLAYER
    1822         showLogMplayerAct->change(PLAYER_NAME);
     1826        showLogMplayerAct->change();
    18231827#endif
    18241828#ifdef LOG_SMPLAYER
    1825         showLogSmplayerAct->change( "SMPlayer" );
    1826 #endif
     1829        showLogSmplayerAct->change(tr("SMPlayer log"));
     1830#endif
     1831        tabletModeAct->change(Images::icon("tablet_mode"), tr("T&ablet mode"));
    18271832
    18281833        // Menu Help
     
    18331838
    18341839#if defined(YOUTUBE_SUPPORT) && defined(YT_USE_YTSIG)
    1835         updateYTAct->change( Images::icon("update_youtube"), tr("Update &Youtube code") );
     1840        updateYTAct->change( Images::icon("update_youtube"), tr("Update ube code") );
    18361841#endif
    18371842
     
    19131918        subtitlesMenu->menuAction()->setText( tr("&Subtitles") );
    19141919        browseMenu->menuAction()->setText( tr("&Browse") );
     1920
    19151921        optionsMenu->menuAction()->setText( tr("Op&tions") );
    19161922        helpMenu->menuAction()->setText( tr("&Help") );
     
    19391945        favorites->menuAction()->setIcon( Images::icon("open_favorites") );
    19401946
     1947
    19411948        tvlist->menuAction()->setText( tr("&TV") );
    19421949        tvlist->menuAction()->setIcon( Images::icon("open_tv") );
     
    19441951        radiolist->menuAction()->setText( tr("Radi&o") );
    19451952        radiolist->menuAction()->setIcon( Images::icon("open_radio") );
     1953
    19461954
    19471955        // Menu Play
     
    20382046        audiotrack_menu->menuAction()->setText( tr("&Track", "audio") );
    20392047        audiotrack_menu->menuAction()->setIcon( Images::icon("audio_track") );
     2048
    20402049
    20412050        audiofilter_menu->menuAction()->setText( tr("&Filters") );
     
    20682077#endif
    20692078        subtitles_track_menu->menuAction()->setIcon( Images::icon("sub") );
     2079
    20702080
    20712081#ifdef MPV_SUPPORT
    20722082        secondary_subtitles_track_menu->menuAction()->setText( tr("Secondary trac&k") );
    20732083        secondary_subtitles_track_menu->menuAction()->setIcon( Images::icon("secondary_sub") );
     2084
    20742085#endif
    20752086
     
    21282139
    21292140#if defined(LOG_MPLAYER) || defined(LOG_SMPLAYER)
    2130         logs_menu->menuAction()->setText( tr("&View logs") );
    2131         logs_menu->menuAction()->setIcon( Images::icon("logs") );
    2132 #endif
     2141        //logs_menu->menuAction()->setText( tr("&View logs") );
     2142        //logs_menu->menuAction()->setIcon( Images::icon("logs") );
     2143#endif
     2144
     2145        // Access menu
     2146        access_menu->menuAction()->setText( tr("Quick access menu") );
     2147        access_menu->menuAction()->setIcon( Images::icon("quick_access_menu") );
    21332148
    21342149        // To be sure that the "<empty>" string is translated
     
    22892304
    22902305void BaseGui::createMplayerWindow() {
    2291     mplayerwindow = new MplayerWindow( panel );
     2306        mplayerwindow = new MplayerWindow(panel);
     2307        mplayerwindow->show();
    22922308        mplayerwindow->setObjectName("mplayerwindow");
    22932309#if USE_COLORKEY
     
    24032419void BaseGui::createPlaylist() {
    24042420#if DOCK_PLAYLIST
    2405         playlist = new Playlist(core, this, 0);
     2421        playlist = new Playlist(this, 0);
    24062422#else
    2407         //playlist = new Playlist(core, this, "playlist");
    2408         playlist = new Playlist(core, 0);
    2409 #endif
    2410 
    2411         /*
    2412         connect( playlist, SIGNAL(playlistEnded()),
    2413              this, SLOT(exitFullscreenOnStop()) );
    2414         */
     2423        playlist = new Playlist(0);
     2424#endif
     2425        playlist->setConfigPath(Paths::configPath());
     2426
    24152427        connect( playlist, SIGNAL(playlistEnded()),
    24162428             this, SLOT(playlistHasFinished()) );
     
    24192431             mplayerwindow, SLOT(showLogo()) );
    24202432
    2421         /*
    2422         connect( playlist, SIGNAL(visibilityChanged()),
    2423              this, SLOT(playlistVisibilityChanged()) );
    2424         */
    2425 
     2433        connect(playlist, SIGNAL(requestToPlayFile(const QString &, int)),
     2434            core, SLOT(open(const QString &, int)));
     2435
     2436        connect(playlist, SIGNAL(requestToAddCurrentFile()), this, SLOT(addToPlaylistCurrentFile()));
     2437
     2438        if (playlist->automaticallyPlayNext()) {
     2439                connect( core, SIGNAL(mediaFinished()), playlist, SLOT(playNext()), Qt::QueuedConnection );
     2440        }
     2441        connect( core, SIGNAL(mplayerFailed(QProcess::ProcessError)), playlist, SLOT(playerFailed(QProcess::ProcessError)) );
     2442        connect( core, SIGNAL(mplayerFinishedWithError(int)), playlist, SLOT(playerFinishedWithError(int)) );
     2443        connect(core, SIGNAL(mediaDataReceived(const MediaData &)), playlist, SLOT(getMediaInfo(const MediaData &)));
     2444
     2445#ifdef PLAYLIST_DOWNLOAD
     2446        playlist->setMaxItemsUrlHistory( pref->history_urls->maxItems() );
     2447#endif
    24262448}
    24272449
     
    24312453        panel->setMinimumSize( QSize(1,1) );
    24322454        panel->setFocusPolicy( Qt::StrongFocus );
     2455
    24332456
    24342457        // panel
     
    24372460        ColorUtils::setBackgroundColor( panel, QColor(0,0,0) );
    24382461        */
     2462
     2463
     2464
     2465
    24392466}
    24402467
     
    24612488
    24622489void BaseGui::createMenus() {
    2463         // MENUS
    2464         openMenu = menuBar()->addMenu("Open");
    2465         playMenu = menuBar()->addMenu("Play");
    2466         videoMenu = menuBar()->addMenu("Video");
    2467         audioMenu = menuBar()->addMenu("Audio");
    2468         subtitlesMenu = menuBar()->addMenu("Subtitles");
    2469         /* menuBar()->addMenu(favorites); */
    2470         browseMenu = menuBar()->addMenu("Browse");
    2471         optionsMenu = menuBar()->addMenu("Options");
    2472         helpMenu = menuBar()->addMenu("Help");
    2473 
    2474         // OPEN MENU
    2475         openMenu->addAction(openFileAct);
    2476 
     2490        // Submenus
     2491
     2492        // Recents submenu
    24772493        recentfiles_menu = new QMenu(this);
    2478         /*
    2479         recentfiles_menu->addAction( clearRecentsAct );
    2480         recentfiles_menu->addSeparator();
    2481         */
    2482 
    2483         openMenu->addMenu( recentfiles_menu );
    2484         openMenu->addMenu(favorites);
    2485         openMenu->addAction(openDirectoryAct);
    2486         openMenu->addAction(openPlaylistAct);
     2494        recentfiles_menu->menuAction()->setObjectName("recents_menu");
    24872495
    24882496        // Disc submenu
     
    24912499        disc_menu->addAction(openDVDAct);
    24922500        disc_menu->addAction(openDVDFolderAct);
    2493 #ifdef BLURAY_SUPPORT
     2501#ifdef BLURAY_SUPPORT
    24942502        disc_menu->addAction(openBluRayAct);
    24952503        disc_menu->addAction(openBluRayFolderAct);
    2496 #endif
     2504#endif
    24972505        disc_menu->addAction(openVCDAct);
    24982506        disc_menu->addAction(openAudioCDAct);
    2499 
    2500         openMenu->addMenu(disc_menu);
    2501 
    2502         openMenu->addAction(openURLAct);
    2503 /* #ifndef Q_OS_WIN */
    2504         openMenu->addMenu(tvlist);
    2505         openMenu->addMenu(radiolist);
    2506 /* #endif */
    2507         openMenu->addSeparator();
    2508         openMenu->addAction(exitAct);
    2509        
    2510         // PLAY MENU
    2511         playMenu->addAction(playAct);
    2512         playMenu->addAction(pauseAct);
    2513         /* playMenu->addAction(playOrPauseAct); */
    2514         playMenu->addAction(stopAct);
    2515         playMenu->addAction(frameStepAct);
    2516         playMenu->addAction(frameBackStepAct);
    2517         playMenu->addSeparator();
    2518         playMenu->addAction(rewind1Act);
    2519         playMenu->addAction(forward1Act);
    2520         playMenu->addAction(rewind2Act);
    2521         playMenu->addAction(forward2Act);
    2522         playMenu->addAction(rewind3Act);
    2523         playMenu->addAction(forward3Act);
    2524         playMenu->addSeparator();
    25252507
    25262508        // Speed submenu
     
    25412523        speed_menu->addAction(incSpeed1Act);
    25422524
    2543         playMenu->addMenu(speed_menu);
    2544 
    25452525        // A-B submenu
    25462526        ab_menu = new QMenu(this);
     
    25522532        ab_menu->addAction(repeatAct);
    25532533
    2554         playMenu->addSeparator();
    2555         playMenu->addMenu(ab_menu);
    2556 
    2557         playMenu->addSeparator();
    2558         playMenu->addAction(gotoAct);
    2559         playMenu->addSeparator();
    2560         playMenu->addAction(playPrevAct);
    2561         playMenu->addAction(playNextAct);
    2562        
    2563         // VIDEO MENU
     2534        // Video track submenu
    25642535        videotrack_menu = new QMenu(this);
    25652536        videotrack_menu->menuAction()->setObjectName("videotrack_menu");
    2566 
    2567         videoMenu->addMenu(videotrack_menu);
    2568 
    2569         videoMenu->addAction(fullscreenAct);
    2570         videoMenu->addAction(compactAct);
    25712537
    25722538#if USE_ADAPTER
     
    25742540        screen_menu = new QMenu(this);
    25752541        screen_menu->menuAction()->setObjectName("screen_menu");
    2576         screen_menu->addActions( screenGroup->actions() );
    2577         videoMenu->addMenu(screen_menu);
    2578 #endif
    2579 
    2580         // Size submenu
     2542        screen_menu->addActions(screenGroup->actions());
     2543#endif
     2544
     2545        // Video size submenu
    25812546        videosize_menu = new QMenu(this);
    25822547        videosize_menu->menuAction()->setObjectName("videosize_menu");
    2583         videosize_menu->addActions( sizeGroup->actions() );
     2548        videosize_menu->addActions();
    25842549        videosize_menu->addSeparator();
    25852550        videosize_menu->addAction(doubleSizeAct);
    2586         videoMenu->addMenu(videosize_menu);
    25872551
    25882552        // Zoom submenu
     
    26032567        zoom_menu->addAction(moveDownAct);
    26042568
    2605         videoMenu->addMenu(zoom_menu);
    2606 
    26072569        // Aspect submenu
    26082570        aspect_menu = new QMenu(this);
    26092571        aspect_menu->menuAction()->setObjectName("aspect_menu");
    2610         aspect_menu->addActions( aspectGroup->actions() );
    2611 
    2612         videoMenu->addMenu(aspect_menu);
     2572        aspect_menu->addActions(aspectGroup->actions());
    26132573
    26142574        // Deinterlace submenu
    26152575        deinterlace_menu = new QMenu(this);
    26162576        deinterlace_menu->menuAction()->setObjectName("deinterlace_menu");
    2617         deinterlace_menu->addActions( deinterlaceGroup->actions() );
    2618 
    2619         videoMenu->addMenu(deinterlace_menu);
     2577        deinterlace_menu->addActions(deinterlaceGroup->actions());
    26202578
    26212579        // Video filter submenu
     
    26422600        unsharp_menu->addActions(unsharpGroup->actions());
    26432601        videofilter_menu->addMenu(unsharp_menu);
    2644         /*
    2645         videofilter_menu->addSeparator();
    2646         videofilter_menu->addActions(denoiseGroup->actions());
    2647         videofilter_menu->addSeparator();
    2648         videofilter_menu->addActions(unsharpGroup->actions());
    2649         */
    2650         videoMenu->addMenu(videofilter_menu);
    26512602
    26522603        // Rotate submenu
     
    26552606        rotate_menu->addActions(rotateGroup->actions());
    26562607
    2657         videoMenu->addMenu(rotate_menu);
    2658 
    2659         videoMenu->addAction(flipAct);
    2660         videoMenu->addAction(mirrorAct);
    2661         videoMenu->addAction(stereo3dAct);
    2662         videoMenu->addSeparator();
    2663         videoMenu->addAction(videoEqualizerAct);
    2664         videoMenu->addAction(screenshotAct);
    2665         videoMenu->addAction(screenshotsAct);
    2666 
    26672608        // Ontop submenu
    26682609        ontop_menu = new QMenu(this);
     
    26702611        ontop_menu->addActions(onTopActionGroup->actions());
    26712612
    2672         videoMenu->addMenu(ontop_menu);
    2673 
    2674 #ifdef VIDEOPREVIEW
    2675         videoMenu->addSeparator();
    2676         videoMenu->addAction(videoPreviewAct);
    2677 #endif
    2678 
    2679 
    2680     // AUDIO MENU
    26812613
    26822614        // Audio track submenu
     
    26842616        audiotrack_menu->menuAction()->setObjectName("audiotrack_menu");
    26852617
    2686         audioMenu->addMenu(audiotrack_menu);
    2687 
    2688         audioMenu->addAction(loadAudioAct);
    2689         audioMenu->addAction(unloadAudioAct);
    2690 
    2691         // Filter submenu
     2618        // Audio filter submenu
    26922619        audiofilter_menu = new QMenu(this);
    26932620        audiofilter_menu->menuAction()->setObjectName("audiofilter_menu");
    26942621        audiofilter_menu->addAction(extrastereoAct);
    2695 #ifdef MPLAYER_SUPPORT
     2622#ifdef MPLAYER_SUPPORT
    26962623        audiofilter_menu->addAction(karaokeAct);
    2697 #endif
     2624#endif
    26982625        audiofilter_menu->addAction(volnormAct);
    2699 
    2700         audioMenu->addMenu(audiofilter_menu);
    27012626
    27022627        // Audio channels submenu
    27032628        audiochannels_menu = new QMenu(this);
    27042629        audiochannels_menu->menuAction()->setObjectName("audiochannels_menu");
    2705         audiochannels_menu->addActions( channelsGroup->actions() );
    2706 
    2707         audioMenu->addMenu(audiochannels_menu);
     2630        audiochannels_menu->addActions(channelsGroup->actions());
    27082631
    27092632        // Stereo mode submenu
    27102633        stereomode_menu = new QMenu(this);
    27112634        stereomode_menu->menuAction()->setObjectName("stereomode_menu");
    2712         stereomode_menu->addActions( stereoGroup->actions() );
    2713 
    2714         audioMenu->addMenu(stereomode_menu);
    2715         audioMenu->addAction(audioEqualizerAct);
    2716         audioMenu->addSeparator();
    2717         audioMenu->addAction(muteAct);
    2718         audioMenu->addSeparator();
    2719         audioMenu->addAction(decVolumeAct);
    2720         audioMenu->addAction(incVolumeAct);
    2721         audioMenu->addSeparator();
    2722         audioMenu->addAction(decAudioDelayAct);
    2723         audioMenu->addAction(incAudioDelayAct);
    2724         audioMenu->addSeparator();
    2725         audioMenu->addAction(audioDelayAct);
    2726 
    2727 
    2728         // SUBTITLES MENU
    2729         // Track submenu
     2635        stereomode_menu->addActions(stereoGroup->actions());
     2636
     2637
     2638        // Subtitles track submenu
    27302639        subtitles_track_menu = new QMenu(this);
    27312640        subtitles_track_menu->menuAction()->setObjectName("subtitlestrack_menu");
    27322641
    2733 #ifdef MPV_SUPPORT
     2642        // Subtitles secondary track submenu
     2643        #ifdef MPV_SUPPORT
    27342644        secondary_subtitles_track_menu = new QMenu(this);
    27352645        secondary_subtitles_track_menu->menuAction()->setObjectName("secondary_subtitles_track_menu");
    2736 #endif
    2737 
    2738         subtitlesMenu->addMenu(subtitles_track_menu);
    2739 #ifdef MPV_SUPPORT
    2740         subtitlesMenu->addMenu(secondary_subtitles_track_menu);
    2741 #endif
    2742         subtitlesMenu->addSeparator();
    2743 
    2744         subtitlesMenu->addAction(loadSubsAct);
    2745         subtitlesMenu->addAction(unloadSubsAct);
    2746 
     2646        #endif
     2647
     2648        // Subtitles fps submenu
    27472649        subfps_menu = new QMenu(this);
    27482650        subfps_menu->menuAction()->setObjectName("subfps_menu");
     
    27542656        subfps_menu->addAction( subFPS29970Act );
    27552657        subfps_menu->addAction( subFPS30Act );
    2756         subtitlesMenu->addMenu(subfps_menu);
    2757         subtitlesMenu->addSeparator();
    2758 
     2658
     2659        // Closed captions submenu
    27592660        closed_captions_menu = new QMenu(this);
    27602661        closed_captions_menu->menuAction()->setObjectName("closed_captions_menu");
     
    27642665        closed_captions_menu->addAction( ccChannel3Act);
    27652666        closed_captions_menu->addAction( ccChannel4Act);
    2766         subtitlesMenu->addMenu(closed_captions_menu);
    2767         subtitlesMenu->addSeparator();
    2768 
    2769         subtitlesMenu->addAction(decSubDelayAct);
    2770         subtitlesMenu->addAction(incSubDelayAct);
    2771         subtitlesMenu->addSeparator();
    2772         subtitlesMenu->addAction(subDelayAct);
    2773         subtitlesMenu->addSeparator();
    2774         subtitlesMenu->addAction(decSubPosAct);
    2775         subtitlesMenu->addAction(incSubPosAct);
    2776         subtitlesMenu->addSeparator();
    2777         subtitlesMenu->addAction(decSubScaleAct);
    2778         subtitlesMenu->addAction(incSubScaleAct);
    2779         subtitlesMenu->addSeparator();
    2780         subtitlesMenu->addAction(decSubStepAct);
    2781         subtitlesMenu->addAction(incSubStepAct);
    2782 #ifdef MPV_SUPPORT
    2783         subtitlesMenu->addSeparator();
    2784         subtitlesMenu->addAction(seekPrevSubAct);
    2785         subtitlesMenu->addAction(seekNextSubAct);
    2786 #endif
    2787         subtitlesMenu->addSeparator();
    2788         subtitlesMenu->addAction(useForcedSubsOnlyAct);
    2789         subtitlesMenu->addSeparator();
    2790         subtitlesMenu->addAction(subVisibilityAct);
    2791         subtitlesMenu->addSeparator();
    2792         subtitlesMenu->addAction(useCustomSubStyleAct);
    2793 #ifdef FIND_SUBTITLES
    2794         subtitlesMenu->addSeparator(); //turbos
    2795         subtitlesMenu->addAction(showFindSubtitlesDialogAct);
    2796         subtitlesMenu->addAction(openUploadSubtitlesPageAct); //turbos
    2797 #endif
    2798 
    2799         // BROWSE MENU
     2667
     2668
    28002669        // Titles submenu
    28012670        titles_menu = new QMenu(this);
    28022671        titles_menu->menuAction()->setObjectName("titles_menu");
    28032672
    2804         browseMenu->addMenu(titles_menu);
    2805 
    28062673        // Chapters submenu
    28072674        chapters_menu = new QMenu(this);
    28082675        chapters_menu->menuAction()->setObjectName("chapters_menu");
    28092676
    2810         browseMenu->addMenu(chapters_menu);
    2811 
    28122677        // Angles submenu
    28132678        angles_menu = new QMenu(this);
    28142679        angles_menu->menuAction()->setObjectName("angles_menu");
    28152680
    2816         browseMenu->addMenu(angles_menu);
    2817 
    2818 #ifdef BOOKMARKS
    28192681        // Bookmarks submenu
     2682
    28202683        bookmark_menu = new QMenu(this);
    28212684        bookmark_menu->menuAction()->setObjectName("bookmarks_menu");
    2822 
    2823         browseMenu->addMenu(bookmark_menu);
    2824 #endif
    2825 
    2826 #if DVDNAV_SUPPORT
    2827         browseMenu->addSeparator();
    2828         browseMenu->addAction(dvdnavMenuAct);
    2829         browseMenu->addAction(dvdnavPrevAct);
    2830 #endif
    2831 
    2832 #if PROGRAM_SWITCH
     2685        #endif
     2686
     2687        // Program submenu
     2688        #if PROGRAM_SWITCH
    28332689        programtrack_menu = new QMenu(this);
    28342690        programtrack_menu->menuAction()->setObjectName("programtrack_menu");
    2835 
    2836         browseMenu->addSeparator();
    2837         browseMenu->addMenu(programtrack_menu);
    2838 #endif
    2839 
    2840 
    2841         // OPTIONS MENU
    2842         optionsMenu->addAction(showPropertiesAct);
    2843         optionsMenu->addAction(showPlaylistAct);
    2844 #ifdef YOUTUBE_SUPPORT
    2845         #if 0
    2846         // Check if the smplayer youtube browser is installed
    2847         {
    2848                 QString tube_exec = Paths::appPath() + "/smtube";
    2849                 #if defined(Q_OS_WIN) || defined(Q_OS_OS2)
    2850                 tube_exec += ".exe";
    2851                 #endif
    2852                 if (QFile::exists(tube_exec)) {
    2853                         optionsMenu->addAction(showTubeBrowserAct);
    2854                         qDebug("BaseGui::createMenus: %s does exist", tube_exec.toUtf8().constData());
    2855                 } else {
    2856                         qDebug("BaseGui::createMenus: %s does not exist", tube_exec.toUtf8().constData());
    2857                 }
    2858         }
    2859         #else
    2860         optionsMenu->addAction(showTubeBrowserAct);
    28612691        #endif
    2862 #endif
     2692
    28632693
    28642694        // OSD submenu
     
    28712701
    28722702
    2873         optionsMenu->addMenu(osd_menu);
    2874 
    2875         // Logs submenu
    2876 #if defined(LOG_MPLAYER) || defined(LOG_SMPLAYER)
    2877         logs_menu = new QMenu(this);
    2878         #ifdef LOG_MPLAYER
    2879         logs_menu->addAction(showLogMplayerAct);
    2880         #endif
    2881         #ifdef LOG_SMPLAYER
    2882         logs_menu->addAction(showLogSmplayerAct);
    2883         #endif
    2884         optionsMenu->addMenu(logs_menu);
    2885 #endif
    2886 
    2887         optionsMenu->addAction(showPreferencesAct);
    2888 
    2889         /*
    2890         Favorites * fav = new Favorites(Paths::configPath() + "/test.fav", this);
    2891         connect(fav, SIGNAL(activated(QString)), this, SLOT(open(QString)));
    2892         optionsMenu->addMenu( fav->menu() )->setText("Favorites");
    2893         */
    2894 
    2895         // HELP MENU
    28962703        // Share submenu
    2897 #ifdef SHARE_MENU
     2704#ifdef SHARE_MENU
    28982705        share_menu = new QMenu(this);
    28992706        share_menu->addAction(facebookAct);
     
    29022709        share_menu->addAction(hotmailAct);
    29032710        share_menu->addAction(yahooAct);
    2904 
    2905         helpMenu->addMenu(share_menu);
    2906         helpMenu->addSeparator();
    2907 #endif
    2908 
    2909         helpMenu->addAction(showFirstStepsAct);
    2910         helpMenu->addAction(showFAQAct);
    2911         helpMenu->addAction(showCLOptionsAct);
    2912         helpMenu->addSeparator();
    2913         helpMenu->addAction(showCheckUpdatesAct);
    2914 #if defined(YOUTUBE_SUPPORT) && defined(YT_USE_YTSIG)
    2915         helpMenu->addAction(updateYTAct);
    2916 #endif
    2917         helpMenu->addSeparator();
    2918         helpMenu->addAction(showConfigAct);
    2919         helpMenu->addSeparator();
    2920 #ifdef SHARE_ACTIONS
    2921         helpMenu->addAction(donateAct);
    2922         helpMenu->addSeparator();
    2923 #endif
    2924         helpMenu->addAction(aboutThisAct);
     2711        #endif
     2712
     2713        // MENUS
     2714        openMenu = menuBar()->addMenu("Open");
     2715        playMenu = menuBar()->addMenu("Play");
     2716        videoMenu = menuBar()->addMenu("Video");
     2717        audioMenu = menuBar()->addMenu("Audio");
     2718        subtitlesMenu = menuBar()->addMenu("Subtitles");
     2719        /* menuBar()->addMenu(favorites); */
     2720        browseMenu = menuBar()->addMenu("Browse");
     2721        viewMenu = menuBar()->addMenu("View");
     2722        optionsMenu = menuBar()->addMenu("Options");
     2723        helpMenu = menuBar()->addMenu("Help");
    29252724
    29262725        // POPUP MENU
     
    29372736        popup->addMenu( favorites );
    29382737        popup->addMenu( browseMenu );
     2738
    29392739        popup->addMenu( optionsMenu );
     2740
     2741
     2742
     2743
     2744
     2745
    29402746
    29412747        // let's show something, even a <empty> entry
    29422748        initializeMenus();
     2749
     2750
     2751
     2752
     2753
     2754
     2755
     2756
     2757
     2758
     2759
     2760
     2761
     2762
     2763
     2764
     2765
     2766
     2767
     2768
     2769
     2770
     2771
     2772
     2773
     2774
     2775
     2776
     2777
     2778
     2779
     2780
     2781
     2782
     2783
     2784
     2785
     2786
     2787
     2788
     2789
     2790
     2791
     2792
     2793
     2794
     2795
     2796
     2797
     2798
     2799
     2800
     2801
     2802
     2803
     2804
     2805
     2806
     2807
     2808
     2809
     2810
     2811
     2812
     2813
     2814
     2815
     2816
     2817
     2818
     2819
     2820
     2821
     2822
     2823
     2824
     2825
     2826
     2827
     2828
     2829
     2830
     2831
     2832
     2833
     2834
     2835
     2836
     2837
     2838
     2839
     2840
     2841
     2842
     2843
     2844
     2845
     2846
     2847
     2848
     2849
     2850
     2851
     2852
     2853
     2854
     2855
     2856
     2857
     2858
     2859
     2860
     2861
     2862
     2863
     2864
     2865
     2866
     2867
     2868
     2869
     2870
     2871
     2872
     2873
     2874
     2875
     2876
     2877
     2878
     2879
     2880
     2881
     2882
     2883
     2884
     2885
     2886
     2887
     2888
     2889
     2890
     2891
     2892
     2893
     2894
     2895
     2896
     2897
     2898
     2899
     2900
     2901
     2902
     2903
     2904
     2905
     2906
     2907
     2908
     2909
     2910
     2911
     2912
     2913
     2914
     2915
     2916
     2917
     2918
     2919
     2920
     2921
     2922
     2923
     2924
     2925
     2926
     2927
     2928
     2929
     2930
     2931
     2932
     2933
     2934
     2935
     2936
     2937
     2938
     2939
     2940
     2941
     2942
     2943
     2944
     2945
     2946
     2947
     2948
     2949
     2950
     2951
     2952
     2953
     2954
     2955
     2956
     2957
     2958
     2959
     2960
     2961
     2962
     2963
     2964
     2965
     2966
     2967
     2968
     2969
     2970
     2971
     2972
     2973
     2974
     2975
     2976
     2977
     2978
     2979
     2980
     2981
     2982
     2983
     2984
     2985
     2986
     2987
     2988
     2989
     2990
     2991
     2992
     2993
     2994
     2995
     2996
     2997
     2998
     2999
     3000
     3001
     3002
     3003
     3004
     3005
     3006
     3007
     3008
     3009
     3010
    29433011}
    29443012
     
    30673135        }
    30683136
    3069 #ifndef NO_USE_INI_FILES
    30703137        PrefGeneral *_general = pref_dialog->mod_general();
    30713138        if (_general->fileSettingsMethodChanged()) {
    30723139                core->changeFileSettingsMethod(pref->file_settings_method);
    30733140        }
    3074 #endif
    30753141
    30763142        PrefInterface *_interface = pref_dialog->mod_interface();
     
    30883154        }
    30893155
    3090 #ifdef MOUSE_GESTURES
    3091         mplayerwindow->activateMouseDragTracking(true);
    3092 #else
     3156#ifndef MOUSE_GESTURES
    30933157        mplayerwindow->activateMouseDragTracking(pref->drag_function == Preferences::MoveWindow);
    30943158#endif
     
    31373201        playlist->setIgnorePlayerErrors(pl->ignorePlayerErrors());
    31383202
     3203
     3204
     3205
    31393206
    31403207        if (need_update_language) {
     
    31593226        saveActions();
    31603227
    3161 #ifndef NO_USE_INI_FILES
    31623228        pref->save();
    3163 #endif
    3164 
     3229
     3230        emit preferencesChanged();
    31653231
    31663232        if (_interface->guiChanged()) {
     
    38713937        seekPrevSubAct->setEnabled(e);
    38723938#endif
     3939
     3940
     3941
     3942
     3943
     3944
     3945
     3946
     3947
     3948
     3949
    38733950}
    38743951
     
    43444421void BaseGui::helpCLOptions() {
    43454422        if (clhelp_window == 0) {
    4346                 clhelp_window = new LogWindow(this);
     4423                clhelp_window = new Window(this);
    43474424        }
    43484425        clhelp_window->setWindowTitle( tr("SMPlayer command line options") );
     4426
    43494427        clhelp_window->setHtml(CLHelp::help(true));
    43504428        clhelp_window->show();
     
    49515029                for (int n=0; n < l.count(); n++) {
    49525030                        if (l[n].isValid()) {
    4953                                 qDebug("BaseGui::dropEvent: scheme: '%s'", l[n].scheme().toUtf8().data());
     5031                                qDebug();
    49545032                                if (l[n].scheme() == "file")
    49555033                                        s = l[n].toLocalFile();
     
    49605038                                qDebug(" * '%s'", l[n].toLocalFile().toUtf8().data());
    49615039                                */
    4962                                 qDebug("BaseGui::dropEvent: file: '%s'", s.toUtf8().data());
     5040                                qDebug(;
    49635041                                files.append(s);
    49645042                        }
     
    49665044        }
    49675045
    4968 
    4969         qDebug( "BaseGui::dropEvent: count: %d", files.count());
     5046        QStringList file_list;
     5047        QStringList dir_list;
     5048        QString sub_file;
     5049
     5050#ifdef Q_OS_WIN
    49705051        if (files.count() > 0) {
    4971                 #ifdef Q_OS_WIN
    49725052                files = Helper::resolveSymlinks(files); // Check for Windows shortcuts
    4973                 #endif
    4974                 files.sort();
    4975 
    4976                 if (files.count() == 1) {
    4977                         QFileInfo fi( files[0] );
    4978 
    4979                         Extensions e;
    4980                         QRegExp ext_sub(e.subtitles().forRegExp());
    4981                         ext_sub.setCaseSensitivity(Qt::CaseInsensitive);
    4982                         if (ext_sub.indexIn(fi.suffix()) > -1) {
    4983                                 qDebug( "BaseGui::dropEvent: loading sub: '%s'", files[0].toUtf8().data());
    4984                                 core->loadSub( files[0] );
    4985                         }
    4986                         else
    4987                         if (fi.isDir()) {
    4988                                 openDirectory( files[0] );
    4989                         } else {
    4990                                 //openFile( files[0] );
    4991                                 if (pref->auto_add_to_playlist) {
    4992                                         if (playlist->maybeSave()) {
    4993                                                 playlist->clear();
    4994                                                 playlist->addFile(files[0], Playlist::NoGetInfo);
    4995 
    4996                                                 open( files[0] );
    4997                                         }
    4998                                 } else {
    4999                                         open( files[0] );
    5000                                 }
    5001                         }
    5002                 } else {
    5003                         // More than one file
    5004                         qDebug("BaseGui::dropEvent: adding files to playlist");
    5005                         playlist->clear();
    5006                         playlist->addFiles(files);
    5007                         //openFile( files[0] );
    5008                         playlist->startPlay();
    5009                 }
     5053        }
     5054#endif
     5055        files.sort();
     5056
     5057        Extensions ext;
     5058        QRegExp ext_sub(ext.subtitles().forRegExp());
     5059        ext_sub.setCaseSensitivity(Qt::CaseInsensitive);
     5060
     5061        foreach (QString file, files) {
     5062                QFileInfo fi(file);
     5063                if (fi.isDir()) {
     5064                        // Folder
     5065                        dir_list << file;
     5066                }
     5067                else
     5068                if (ext_sub.indexIn(fi.suffix()) > -1) {
     5069                        // Subtitle file
     5070                        if (sub_file.isEmpty()) sub_file = file;
     5071                }
     5072                else {
     5073                        // File (or something else)
     5074                        file_list << file;
     5075                }
     5076        }
     5077
     5078        qDebug() << "BaseGui::dropEvent: list of dirs:" << dir_list;
     5079        qDebug() << "BaseGui::dropEvent: list of files:" << file_list;
     5080        qDebug() << "BaseGui::dropEvent: subtitle file:" << sub_file;
     5081
     5082        if (!sub_file.isEmpty()) {
     5083                core->loadSub(sub_file);
     5084                return;
     5085        }
     5086
     5087        if (file_list.isEmpty() && dir_list.isEmpty()) {
     5088                return;
     5089        }
     5090
     5091        if (dir_list.count() == 1 && file_list.isEmpty()) {
     5092                openDirectory(dir_list[0]);
     5093                return;
     5094        }
     5095
     5096        if (pref->auto_add_to_playlist) {
     5097                if (!playlist->maybeSave()) return;
     5098                playlist->clear();
     5099
     5100                if (!dir_list.isEmpty()) {
     5101                        // Add directories to the playlist
     5102                        foreach(QString dir, dir_list) playlist->addDirectory(dir);
     5103                }
     5104
     5105                if (!file_list.isEmpty()) {
     5106                        // Add files to the playlist
     5107                        playlist->addFiles(file_list, Playlist::NoGetInfo);
     5108                }
     5109
     5110                // All files are in the playlist, let's start to play
     5111                playlist->startPlay();
     5112        } else {
     5113                // It wasn't possible to add files to the list
     5114                // Let's open the first directory or file
     5115                if (!dir_list.isEmpty()) openDirectory(dir_list[0]); // Bug? This actually modifies the playlist...
     5116                else
     5117                if (!file_list.isEmpty()) open(file_list[0]);
    50105118        }
    50115119}
     
    51105218}
    51115219
     5220
     5221
     5222
     5223
     5224
     5225
     5226
     5227
    51125228void BaseGui::displayState(Core::State state) {
    51135229        qDebug() << "BaseGui::displayState:" << core->stateToString();
     
    51235239        if (state == Core::Stopped) setWindowCaption( "SMPlayer" );
    51245240
    5125 #if defined(Q_OS_WIN) || defined(Q_OS_OS2)
    51265241#ifdef AVOID_SCREENSAVER
    51275242        /* Disable screensaver by event */
     
    51345249        }
    51355250#endif
    5136 #endif
    51375251}
    51385252
     
    51585272        //qDebug( " duration: %f, current_sec: %f", core->mdat.duration, core->mset.current_sec);
    51595273
    5160         emit timeChanged( time );
     5274        emit timeChanged(sec);
     5275        emit timeChanged(time);
    51615276}
    51625277
     
    51655280        if (pref->fullscreen) return;
    51665281
     5282
     5283
    51675284        if (!pref->use_mplayer_window) {
    51685285                pref->size_factor = factor;
     
    51785295        qDebug("BaseGui::resizeWindow: %d, %d", w, h);
    51795296
    5180         // If fullscreen, don't resize!
    5181         if (pref->fullscreen) return;
     5297        // If fullscreen, don't resize!
     5298        if (pref->fullscreen) return;
    51825299
    51835300        if ( (pref->resize_method==Preferences::Never) && (panel->isVisible()) ) {
     
    52275344        qDebug("BaseGui::resizeWindow: new_width: %d new_height: %d", new_width, new_height);
    52285345
    5229 #if 0
    5230         QSize desktop_size = DesktopInfo::desktop_size(this);
     5346#ifdef Q_OS_WIN
     5347        QRect desktop_rect = QApplication::desktop()->availableGeometry(this);
     5348        QSize desktop_size = QSize(desktop_rect.width(), desktop_rect.height());
    52315349        //desktop_size.setWidth(1000); desktop_size.setHeight(1000); // test
    52325350        if (new_width > desktop_size.width()) {
    5233                 double aspect = (double) new_width / new_height;
     5351                double aspect = (double) new_width / new_height;
    52345352                qDebug("BaseGui::resizeWindow: width (%d) is larger than desktop width (%d)", new_width, desktop_size.width());
    52355353                new_width = desktop_size.width();
     
    52595377        // and center the window in that case
    52605378        if ((pref->center_window_if_outside) && (!core->mdat.novideo)) {
    5261                 QRect screen_rect = QApplication::desktop()->screenGeometry(this);
     5379                QRect screen_rect = QApplication::desktop()->Geometry(this);
    52625380                QPoint right_bottom = QPoint(this->pos().x() + this->width(), this->pos().y() + this->height());
    52635381                qDebug("BaseGui::resizeWindow: right bottom point: %d, %d", right_bottom.x(), right_bottom.y());;
     
    52675385                        int x = screen_rect.x() + ((screen_rect.width() - width()) / 2);
    52685386                        int y = screen_rect.y() + ((screen_rect.height() - height()) / 2);
     5387
     5388
     5389
     5390
     5391
     5392
    52695393                        move(x, y);
    52705394                }
     
    54145538        qDebug("BaseGui::checkStayOnTop");
    54155539        if ((!pref->fullscreen) && (pref->stay_on_top == Preferences::WhilePlayingOnTop)) {
    5416                 setStayOnTop((state == Core::Playing));
     5540                if (state != Core::Buffering) {
     5541                        setStayOnTop((state == Core::Playing));
     5542                }
    54175543        }
    54185544}
     
    54655591
    54665592void BaseGui::changeStyleSheet(QString style) {
    5467         qDebug("BaseGui::changeStyleSheet: %s", style.toUtf8().constData());
     5593        qDebug(;
    54685594
    54695595        // Load default stylesheet
     
    54875613                // Load style file
    54885614                if (QFile::exists(qss_file)) {
    5489                         qDebug("BaseGui::changeStyleSheet: '%s'", qss_file.toUtf8().data());
     5615                        qDebug(;
    54905616                        stylesheet += loadQss(qss_file);
    54915617                }
    54925618        }
    54935619
    5494         //qDebug("BaseGui::changeStyleSheet: styleSheet: %s", stylesheet.toUtf8().constData());
     5620        if (pref->tablet_mode) {
     5621                QString tf = Images::file("tabletmode.css");
     5622                qDebug() << "BaseGui::changeStyleSheet: tablet stylesheet file:" << tf;
     5623
     5624                QFile file(tf);
     5625                if (file.exists() && file.open(QIODevice::ReadOnly | QIODevice::Text)) {
     5626                        stylesheet += file.readAll();
     5627                }
     5628        }
     5629
     5630        //qDebug() << "BaseGui::changeStyleSheet: styleSheet:" << stylesheet;
    54955631        qApp->setStyleSheet(stylesheet);
    54965632}
     
    55095645        if (style.isEmpty()) style = default_style;
    55105646        qDebug() << "BaseGui::applyStyles: style:" << style;
    5511         if (!style.isEmpty()) qApp->setStyle(style);
    5512 #endif
    5513 
    5514 }
     5647        if (!style.isEmpty()) {
     5648                qApp->setStyle(style);
     5649                #ifdef Q_OS_WIN
     5650                qApp->setPalette(qApp->style()->standardPalette());
     5651                #endif
     5652        }
     5653#endif
     5654}
     5655
     5656void BaseGui::setTabletMode(bool b) {
     5657        qDebug() << "BaseGui::setTabletMode:" << b;
     5658        pref->tablet_mode = b;
     5659        populateMainMenu();
     5660        applyStyles();
     5661
     5662        emit tabletModeChanged(b);
     5663}
     5664
    55155665
    55165666void BaseGui::loadActions() {
     
    55495699        #endif
    55505700
    5551         if (pref->drag_function == Preferences::Gestures) {
     5701        if (pref->drag_function == Preferences::Gestures) {
    55525702                if (core->state() == Core::Stopped) return;
    55535703
     
    55565706                int h_desp = qAbs(diff.x());
    55575707                int v_desp = qAbs(diff.y());
     5708
     5709
     5710
     5711
     5712
    55585713
    55595714                if (h_desp > v_desp) {
     
    55775732                        }
    55785733                        #ifdef MG_DELAYED_SEEK
     5734
    55795735                        int time = qAbs(delayed_seek_value);
    55805736                        int minutes = time / 60;
     
    55825738                        QString s;
    55835739                        if (delayed_seek_value >= 0) s = "+"; else s = "-";
    5584                         if (minutes > 0) s += QString("%1").arg(minutes, 2, 10, QChar('0')) + ":";
     5740                        s += QString("%1").arg(minutes, 2, 10, QChar('0')) + ":";
    55855741                        s += QString("%1").arg(seconds, 2, 10, QChar('0'));
     5742
     5743
     5744
     5745
     5746
    55865747                        if (pref->fullscreen) {
    55875748                                core->displayTextOnOSD(s, 1000);
     
    55905751                        }
    55915752                        #endif
    5592                 } else {
     5753                }
     5754                else
     5755                if (h_desp < v_desp) {
    55935756                        // Vertical
    55945757                        if (diff.y() > t) core->decVolume(1);
     
    55995762#endif
    56005763
    5601         if (pref->drag_function == Preferences::MoveWindow) {
     5764        if (pref->drag_function == Preferences::MoveWindow) {
    56025765                moveWindowDiff(diff);
    56035766        }
     
    56065769void BaseGui::moveWindowDiff(QPoint diff) {
    56075770        //qDebug() << "BaseGui::moveWindowDiff:" << diff;
     5771
     5772
     5773
    56085774
    56095775        if (pref->fullscreen || isMaximized()) {
     
    56235789        if (count > 3) {
    56245790                //qDebug() << "BaseGui::moveWindowDiff:" << d;
    5625                 QPoint new_pos = pos() + d;
     5791                QPoint new_pos = w->pos() + d;
     5792                /*
    56265793                if (new_pos.y() < 0) new_pos.setY(0);
    56275794                if (new_pos.x() < 0) new_pos.setX(0);
     5795
    56285796                //qDebug() << "BaseGui::moveWindowDiff: new_pos:" << new_pos;
    5629                 move(new_pos);
     5797                move(new_pos);
    56305798                count = 0;
    56315799                d = QPoint(0,0);
     
    56335801#else
    56345802        //qDebug() << "BaseGui::moveWindowDiff:" << diff;
    5635         move(pos() + diff);
     5803        pos() + diff);
    56365804#endif
    56375805}
     
    56485816
    56495817
    5650 #if QT_VERSION < 0x050000
     5818#if
    56515819void BaseGui::showEvent( QShowEvent * ) {
    56525820        qDebug("BaseGui::showEvent");
     
    56775845        //qDebug("BaseGui::event: %d", e->type());
    56785846
    5679         bool result = QWidget::event(e);
     5847        bool result = Q::event(e);
    56805848        if ((ignore_show_hide_events) || (!pref->pause_when_hidden)) return result;
    56815849
     
    57355903                ErrorDialog d(this);
    57365904                d.setWindowTitle(tr("%1 Error").arg(PLAYER_NAME));
    5737                 d.setText(tr("%1 has finished unexpectedly.").arg(PLAYER_NAME) + " " +
    5738                       tr("Exit code: %1").arg(exit_code));
    5739 #ifdef LOG_MPLAYER
     5905                QString text = tr("%1 has finished unexpectedly.").arg(PLAYER_NAME) + " " +
     5906                                           tr("Exit code: %1").arg(exit_code);
     5907               
     5908                #if defined(Q_OS_WIN) && defined(LOG_MPLAYER)
     5909                bool ytdl_fails = false;
     5910               
     5911                QString ytdl_bin = QFileInfo(pref->mplayer_bin).absolutePath() +"/youtube-dl.exe";
     5912                qDebug() << "BaseGui::showExitCodeFromMplayer: youtube-dl path:" << ytdl_bin;
     5913               
     5914                #if 0
     5915                // Newer versions of mpv display this message
     5916                if (mplayer_log.contains("youtube-dl failed")) {
     5917                        int code = QProcess::execute(ytdl_bin, QStringList() << "--version");
     5918                        qDebug() << "BaseGui::showExitCodeFromMplayer: youtube-dl exit code:" << code;
     5919                        if (code == -1) ytdl_fails = true;
     5920                }
     5921                else
     5922                #endif
     5923                if (mplayer_log.contains("youtube-dl not found, not executable, or broken")) {
     5924                        bool exists_ytdl = QFile::exists(ytdl_bin);
     5925                        qDebug() << "BaseGui::showExitCodeFromMplayer: check if" << ytdl_bin << "exists:" << exists_ytdl;
     5926                        if (exists_ytdl) ytdl_fails = true;
     5927                }
     5928               
     5929                if (ytdl_fails) {
     5930                        text += "<br><br>" + tr("The component youtube-dl failed to run.") +" "+
     5931                                        tr("Installing the Microsoft Visual C++ 2010 Redistributable Package (x86) may fix the problem.") +
     5932                                        "<br><a href=\"https://www.microsoft.com/en-US/download/details.aspx?id=5555\">" +
     5933                                        tr("Click here to get it") + "</a>.";
     5934                }
     5935                #endif
     5936               
     5937                d.setText(text);
     5938               
     5939                #ifdef LOG_MPLAYER
    57405940                d.setLog( mplayer_log );
    5741 #endif
     5941#endif
    57425942                d.exec();
    57435943        }
     
    57755975
    57765976        if (!find_subs_dialog) {
    5777                 find_subs_dialog = new FindSubtitlesWindow(this, Qt::Window | Qt::WindowMinMaxButtonsHint);
     5977                find_subs_dialog = new FindSubtitlesWindow();
    57785978                find_subs_dialog->setSettings(Global::settings);
    57795979                find_subs_dialog->setWindowIcon(windowIcon());
     
    58686068}
    58696069
     6070
     6071
     6072
     6073
     6074
     6075
     6076
     6077
     6078
     6079
     6080
     6081
     6082
     6083
     6084
     6085
     6086
     6087
     6088
     6089
     6090
     6091
     6092
     6093
     6094
     6095
     6096
     6097
     6098
     6099
     6100
     6101
    58706102#ifdef Q_OS_WIN
     6103
     6104
     6105
     6106
     6107
     6108
     6109
     6110
     6111
     6112
     6113
     6114
     6115
     6116
     6117
     6118
     6119
     6120
     6121
     6122
     6123
     6124
     6125
     6126
     6127
     6128
     6129
     6130
     6131
     6132
     6133
    58716134#ifdef AVOID_SCREENSAVER
    5872 /* Disable screensaver by event */
    5873 bool BaseGui::winEvent ( MSG * m, long * result ) {
    5874         //qDebug("BaseGui::winEvent");
     6135        else
    58756136        if (m->message==WM_SYSCOMMAND) {
    58766137                if ((m->wParam & 0xFFF0)==SC_SCREENSAVE || (m->wParam & 0xFFF0)==SC_MONITORPOWER) {
     
    58966157                }
    58976158        }
     6159
    58986160        return false;
    58996161}
    5900 #endif
    5901 #endif
    5902 
    5903 #if defined(Q_OS_WIN) || defined(Q_OS_OS2)
     6162
     6163#if QT_VERSION >= 0x050000
     6164bool BaseGui::nativeEvent(const QByteArray &eventType, void * message, long * result) {
     6165        //qDebug() << "BaseGui::nativeEvent:" << eventType;
     6166       
     6167        if (eventType == "windows_generic_MSG") {
     6168                MSG * m = static_cast<MSG *>(message);
     6169                return winEvent(m, result);
     6170        }
     6171       
     6172        return false;
     6173}
     6174#endif
     6175
     6176void BaseGui::checkSystemTabletMode() {
     6177        #if ((QT_VERSION >= 0x040807 && QT_VERSION < 0x050000) || (QT_VERSION >= 0x050500))
     6178        if (QSysInfo::windowsVersion() >= QSysInfo::WV_WINDOWS10) {
     6179                // Windows 10 code (don't know if this works on Windows 8)
     6180                QSettings set("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ImmersiveShell", QSettings::NativeFormat);
     6181                QVariant v = set.value("TabletMode");
     6182                if (v.isValid()) {
     6183                        bool system_tablet_mode = (v.toInt() == 1);
     6184                        qDebug() << "BaseGui::checkSystemTabletMode: system_tablet_mode:" << system_tablet_mode;
     6185                        systemTabletModeChanged(system_tablet_mode);
     6186                }
     6187        }
     6188        else
     6189        if (QSysInfo::windowsVersion() == QSysInfo::WV_WINDOWS8_1 ||
     6190        QSysInfo::windowsVersion() == QSysInfo::WV_WINDOWS8)
     6191        {
     6192                bool slate_mode = (GetSystemMetrics(SM_CONVERTIBLESLATEMODE) == 0);
     6193                qDebug() << "BaseGui::checkSystemTabletMode: slate_mode:" << slate_mode;
     6194                /*
     6195                bool docked = (GetSystemMetrics(SM_SYSTEMDOCKED) != 0);
     6196                qDebug() << "BaseGui::checkSystemTabletMode: docked:" << docked;
     6197                */
     6198                bool system_tablet_mode = slate_mode;
     6199                systemTabletModeChanged(system_tablet_mode);
     6200        }
     6201        #endif
     6202}
     6203
     6204void BaseGui::systemTabletModeChanged(bool system_tablet_mode) {
     6205        qDebug() << "BaseGui::systemTabletModeChanged:" << system_tablet_mode;
     6206       
     6207        if (pref->tablet_mode != system_tablet_mode) {
     6208                qDebug("BaseGui::systemTabletModeChanged: tablet mode should be changed");
     6209               
     6210                if (pref->tablet_mode_change_answer == "yes") {
     6211                        setTabletMode(system_tablet_mode);
     6212                }
     6213                else
     6214                if (pref->tablet_mode_change_answer == "no") {
     6215                        return;
     6216                }
     6217                else {
     6218                        // Ask the user
     6219                        QString text;
     6220                        if (system_tablet_mode)
     6221                                text = tr("The system has switched to tablet mode. Should SMPlayer change to tablet mode as well?");
     6222                        else
     6223                                text = tr("The system has exited tablet mode. Should SMPlayer turn off the tablet mode as well?");
     6224               
     6225                        QMessageBox mb(QMessageBox::Question, "SMPlayer", text, QMessageBox::Yes | QMessageBox::No);
     6226                        #if QT_VERSION >= 0x050200
     6227                        QCheckBox cb(tr("Remember my decision and don't ask again"));
     6228                        mb.setCheckBox(&cb);
     6229                        #endif
     6230                        if (mb.exec() == QMessageBox::Yes) {
     6231                                setTabletMode(system_tablet_mode);
     6232                        }
     6233                        #if QT_VERSION >= 0x050200
     6234                        if (cb.isChecked()) {
     6235                                pref->tablet_mode_change_answer = (mb.result() == QMessageBox::Yes ? "yes" : "no");
     6236                        }
     6237                        #endif
     6238                }
     6239                // Update action button
     6240                tabletModeAct->setChecked(pref->tablet_mode);
     6241        }
     6242}
     6243
    59046244#ifdef AVOID_SCREENSAVER
    59056245void BaseGui::clear_just_stopped() {
     
    59086248}
    59096249#endif
    5910 #endif
     6250
     6251#endif // Q_OS_WIN
    59116252
    59126253#include "moc_basegui.cpp"
Note: See TracChangeset for help on using the changeset viewer.