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/baseguiplus.cpp

    r175 r179  
    2424#include "playlist.h"
    2525
    26 #ifdef Q_OS_WIN
     26#ifdef TV_SUPPORT
     27#include "tvlist.h"
     28#else
    2729#include "favorites.h"
    28 #else
    29 #include "tvlist.h"
    3030#endif
    3131
    3232#include "widgetactions.h"
     33
    3334
    3435#include <QMenu>
     
    4546#endif
    4647
     48
     49
     50
     51
     52
     53
     54
     55
     56
     57
     58
     59
     60
     61
     62
     63
     64
     65
    4766using namespace Global;
    4867
    4968BaseGuiPlus::BaseGuiPlus( QWidget * parent, Qt::WindowFlags flags)
    5069        : BaseGui( parent, flags )
     70
     71
     72
     73
     74
     75
     76
     77
     78
     79
     80
     81
     82
    5183{
    5284        // Initialize variables
    53         mainwindow_visible = true;
    5485        //infowindow_visible = false;
    55         trayicon_playlist_was_visible = false;
    56         widgets_size = 0;
    57 #if DOCK_PLAYLIST
    58         fullscreen_playlist_was_visible = false;
    59         fullscreen_playlist_was_floating = false;
    60         compact_playlist_was_visible = false;
    61         ignore_playlist_events = false;
    62 #endif
    63 
    6486        mainwindow_pos = pos();
    6587
     
    7193
    7294        quitAct = new MyAction(QKeySequence("Ctrl+Q"), this, "quit");
    73     connect( quitAct, SIGNAL(triggered()), this, SLOT(quit()) );
    74         openMenu->addAction(quitAct);
     95        connect( quitAct, SIGNAL(triggered()), this, SLOT(quit()) );
    7596
    7697        showTrayAct = new MyAction(this, "show_tray_icon" );
     
    79100             tray, SLOT(setVisible(bool)) );
    80101
    81 #ifndef Q_OS_OS2
    82         optionsMenu->addAction(showTrayAct);
    83 #else
    84         trayAvailable();
    85         connect( optionsMenu, SIGNAL(aboutToShow()),
    86              this, SLOT(trayAvailable()) );
    87 #endif
    88 
    89102        showAllAct = new MyAction(this, "restore/hide");
    90103        connect( showAllAct, SIGNAL(triggered()),
    91104             this, SLOT(toggleShowAll()) );
    92 
    93105
    94106        context_menu = new QMenu(this);
     
    101113        context_menu->addAction(openURLAct);
    102114        context_menu->addMenu(favorites);
    103 #ifndef Q_OS_WIN
     115#if
    104116        context_menu->addMenu(tvlist);
    105117        context_menu->addMenu(radiolist);
     
    116128        context_menu->addSeparator();
    117129        context_menu->addAction(quitAct);
    118        
     130
    119131        tray->setContextMenu( context_menu );
    120132
     
    150162#endif // DOCK_PLAYLIST
    151163
     164
     165
     166
     167
     168
     169
     170
     171
     172
     173
     174
     175
     176
     177
     178
     179
     180
     181
     182
     183
     184
     185
     186
     187
     188
     189
     190
     191
     192
     193
     194
     195
     196
     197
     198
     199
     200
     201
     202
     203
     204
     205
     206
     207
    152208        retranslateStrings();
    153 
    154     loadConfig();
     209        loadConfig();
    155210}
    156211
     
    158213        saveConfig();
    159214        tray->hide();
     215
     216
     217
     218
     219
     220
     221
     222
     223
     224
     225
     226
     227
     228
     229
     230
     231
     232
     233
     234
     235
     236
     237
     238
     239
     240
     241
    160242}
    161243
     
    217299#if DOCK_PLAYLIST
    218300    playlistdock->setWindowTitle( tr("Playlist") );
     301
     302
     303
     304
     305
     306
     307
     308
     309
     310
     311
     312
     313
    219314#endif
    220315}
     
    411506        (!fullscreen_playlist_was_floating) */ )
    412507        {
     508
    413509                playlistdock->setFloating(true);
     510
    414511                playlistdock->hide();
    415512        }
     
    583680#endif
    584681
     682
     683
     684
     685
     686
     687
     688
     689
     690
     691
     692
     693
     694
     695
    585696// Convenience functions intended for other GUI's
    586697TimeSliderAction * BaseGuiPlus::createTimeSliderAction(QWidget * parent) {
     
    623734        volumeslider_action->setObjectName("volumeslider_action");
    624735
    625         connect( volumeslider_action, SIGNAL( valueChanged(int) ), 
     736        connect( volumeslider_action, SIGNAL( valueChanged(int) ),
    626737             core, SLOT( setVolume(int) ) );
    627738        connect( core, SIGNAL(volumeChanged(int)),
     
    631742}
    632743
    633 #ifdef Q_OS_OS2
    634 // we test if xcenter is available at all. if not disable the tray action. this is possible when xcenter is not opened or crashed
    635 void BaseGuiPlus::trayAvailable() {
    636         if (!tray->isSystemTrayAvailable()) {
    637                         optionsMenu->removeAction(showTrayAct);
    638         }
    639         else {
    640                 optionsMenu->addAction(showTrayAct);
    641         }
    642 }
     744TimeLabelAction * BaseGuiPlus::createTimeLabelAction(TimeLabelAction::TimeLabelType type, QWidget * parent) {
     745        TimeLabelAction * time_label_action = new TimeLabelAction(type, parent);
     746        time_label_action->setObjectName("timelabel_action");
     747
     748        connect(this, SIGNAL(timeChanged(double)), time_label_action, SLOT(setCurrentTime(double)));
     749        connect(core, SIGNAL(newDuration(double)), time_label_action, SLOT(setTotalTime(double)));
     750
     751        return time_label_action;
     752}
     753
     754#ifdef SCREENS_SUPPORT
     755void BaseGuiPlus::showScreensInfo() {
     756        qDebug("BaseGuiPlus::showScreensInfo");
     757
     758        /*
     759        updateSendToScreen();
     760        */
     761
     762        if (!screens_info_window) {
     763                screens_info_window = new InfoWindow(this);
     764                screens_info_window->setWindowTitle(tr("Information about connected screens"));
     765        }
     766
     767        QString t = "<h1>" + tr("Connected screens") + "</h1>";
     768#if QT_VERSION >= 0x050000
     769        QList<QScreen *> screen_list = qApp->screens();
     770        t += "<p>" + tr("Number of screens: %1").arg(screen_list.count());
     771        QString screen_name = qApp->primaryScreen()->name();
     772        #ifdef Q_OS_WIN
     773        screen_name = screen_name.replace("\\\\.\\","");
     774        #endif
     775        t += "<p>" + tr("Primary screen: %1").arg(screen_name);
     776
     777        t += "<ul>";
     778        foreach(QScreen *screen, screen_list) {
     779                screen_name = screen->name();
     780                #ifdef Q_OS_WIN
     781                screen_name = screen_name.replace("\\\\.\\","");
     782                #endif
     783                t += "<li>" + tr("Information for screen %1").arg(screen_name);
     784                t += "<ul>";
     785                t += "<li>" + tr("Available geometry: %1 %2 %3 x %4").arg(screen->availableGeometry().x()).arg(screen->availableGeometry().y())
     786                                                .arg(screen->availableGeometry().width()).arg(screen->availableGeometry().height()) + "</li>";
     787                t += "<li>" + tr("Available size: %1 x %2").arg(screen->availableSize().width()).arg(screen->availableSize().height()) + "</li>";
     788                t += "<li>" + tr("Available virtual geometry: %1 %2 %3 x %4").arg(screen->availableVirtualGeometry().x())
     789                                                .arg(screen->availableVirtualGeometry().y())
     790                                                .arg(screen->availableVirtualGeometry().width())
     791                                                .arg(screen->availableVirtualGeometry().height()) + "</li>";
     792                t += "<li>" + tr("Available virtual size: %1 x %2").arg(screen->availableVirtualSize().width())
     793                                                .arg(screen->availableVirtualSize().height()) + "</li>";
     794                t += "<li>" + tr("Depth: %1 bits").arg(screen->depth()) + "</li>";
     795                t += "<li>" + tr("Geometry: %1 %2 %3 x %4").arg(screen->geometry().x()).arg(screen->geometry().y())
     796                                                .arg(screen->geometry().width()).arg(screen->geometry().height()) + "</li>";
     797                t += "<li>" + tr("Logical DPI: %1").arg(screen->logicalDotsPerInch()) + "</li>";
     798                //t += "<li>" + tr("Orientation: %1").arg(screen->orientation()) + "</li>";
     799                t += "<li>" + tr("Physical DPI: %1").arg(screen->physicalDotsPerInch()) + "</li>";
     800                t += "<li>" + tr("Physical size: %1 x %2 mm").arg(screen->physicalSize().width()).arg(screen->physicalSize().height()) + "</li>";
     801                //t += "<li>" + tr("Primary orientation: %1").arg(screen->primaryOrientation()) + "</li>";
     802                t += "<li>" + tr("Refresh rate: %1 Hz").arg(screen->refreshRate()) + "</li>";
     803                t += "<li>" + tr("Size: %1 x %2").arg(screen->size().width()).arg(screen->size().height()) + "</li>";
     804                t += "<li>" + tr("Virtual geometry: %1 %2 %3 x %4").arg(screen->virtualGeometry().x()).arg(screen->virtualGeometry().y())
     805                                                .arg(screen->virtualGeometry().width()).arg(screen->virtualGeometry().height()) + "</li>";
     806                t += "<li>" + tr("Virtual size: %1 x %2").arg(screen->virtualSize().width()).arg(screen->virtualSize().height()) + "</li>";
     807                t += "</ul></li>";
     808        }
     809        t += "</ul>";
     810#else
     811        QDesktopWidget * dw = qApp->desktop();
     812        t += "<p>" + tr("Number of screens: %1").arg(dw->screenCount());
     813        t += "<p>" + tr("Primary screen: %1").arg(dw->primaryScreen()+1);
     814
     815        t += "<ul>";
     816        for (int n = 0; n < dw->screenCount(); n++) {
     817                t += "<li>" + tr("Information for screen %1").arg(n+1);
     818                t += "<ul>";
     819                t += "<li>" + tr("Available geometry: %1 %2 %3 x %4").arg(dw->availableGeometry(n).x()).arg(dw->availableGeometry(n).y())
     820                                                .arg(dw->availableGeometry(n).width()).arg(dw->availableGeometry(n).height()) + "</li>";
     821                t += "<li>" + tr("Geometry: %1 %2 %3 x %4").arg(dw->screenGeometry(n).x()).arg(dw->screenGeometry(n).y())
     822                                                .arg(dw->screenGeometry(n).width()).arg(dw->screenGeometry(n).height()) + "</li>";
     823                t += "</ul></li>";
     824        }
     825        t += "</ul>";
     826#endif
     827
     828        screens_info_window->setHtml(t);
     829        screens_info_window->show();
     830}
     831
     832void BaseGuiPlus::updateSendToScreen() {
     833        qDebug("BaseGuiPlus::updateSendToScreen");
     834
     835        sendToScreenGroup->clear(true);
     836
     837#if QT_VERSION >= 0x050000
     838        QList<QScreen *> screen_list = qApp->screens();
     839        int n_screens = screen_list.count();
     840#else
     841        QDesktopWidget * dw = qApp->desktop();
     842        int n_screens = dw->screenCount();
     843#endif
     844
     845        for (int n = 0; n < n_screens; n++) {
     846                QString name;
     847                #if QT_VERSION >= 0x050000
     848                name = screen_list[n]->name();
     849                #ifdef Q_OS_WIN
     850                name = name.replace("\\\\.\\","");
     851                #endif
     852                bool is_primary_screen = (screen_list[n] == qApp->primaryScreen());
     853                #else
     854                bool is_primary_screen = (n == dw->primaryScreen());
     855                #endif
     856                MyAction * screen_item = new MyActionGroupItem(this, sendToScreenGroup, QString("send_to_screen_%1").arg(n+1).toLatin1().constData(), n);
     857                QString desc = "&" + QString::number(n+1);
     858                if (!name.isEmpty()) desc += " - " + name;
     859                if (is_primary_screen) desc += " (" + tr("Primary screen") + ")";
     860                screen_item->change(desc);
     861        }
     862
     863        sendToScreen_menu->clear();
     864        sendToScreen_menu->addActions(sendToScreenGroup->actions());
     865       
     866        if (n_screens == 1 && isVideoDetached()) detachVideo(false);
     867}
     868
     869void BaseGuiPlus::sendVideoToScreen(int screen) {
     870        qDebug() << "BaseGuiPlus::sendVideoToScreen:" << screen;
     871
     872#if QT_VERSION >= 0x050000
     873        QList<QScreen *> screen_list = qApp->screens();
     874        int n_screens = screen_list.count();
     875#else
     876        QDesktopWidget * dw = qApp->desktop();
     877        int n_screens = dw->screenCount();
     878#endif
     879
     880        if (screen < n_screens) {
     881                #if QT_VERSION >= 0x050000
     882                bool is_primary_screen = (screen_list[screen] == qApp->primaryScreen());
     883                QRect geometry = screen_list[screen]->geometry();
     884                #else
     885                bool is_primary_screen = (screen == dw->primaryScreen());
     886                QRect geometry = dw->screenGeometry(screen);   
     887                qDebug() << "BaseGuiPlus::sendVideoToScreen: screen geometry:" << geometry;
     888                #endif
     889                qDebug() << "BaseGuiPlus::sendVideoToScreen: is_primary_screen:" << is_primary_screen;
     890                //is_primary_screen = false;
     891                if (is_primary_screen) {
     892                        mplayerwindow->showNormal();
     893                        detachVideo(false);
     894                } else {
     895                        detachVideo(true);
     896                        //#if QT_VERSION >= 0x050000
     897                        //mplayerwindow->windowHandle()->setScreen(screen_list[screen]); // Doesn't work
     898                        //#else
     899                        mplayerwindow->move(geometry.x(), geometry.y());
     900                        //#endif
     901                        qApp->processEvents();
     902                        //toggleFullscreen(true);
     903                        mplayerwindow->showFullScreen();
     904                }
     905        } else {
     906                // Error
     907                qWarning() << "BaseGuiPlus::sendVideoToScreen: screen" << screen << "is not valid";
     908        }
     909}
     910
     911bool BaseGuiPlus::isVideoDetached() {
     912        return (mplayerwindow->parent() == 0);
     913}
     914
     915void BaseGuiPlus::detachVideo(bool detach) {
     916        qDebug() << "BaseGuiPlus::detachVideo:" << detach;
     917
     918        if (detach) {
     919                if (!isVideoDetached()) {
     920                        toggleFullscreen(false);
     921                        fullscreenAct->setEnabled(false);
     922
     923                        panel->layout()->removeWidget(mplayerwindow);
     924                        mplayerwindow->setParent(0);
     925                        mplayerwindow->setWindowTitle(tr("SMPlayer external screen output"));
     926
     927                        detached_label->show();
     928                }
     929                mplayerwindow->show();
     930        } else {
     931                if (isVideoDetached()) {
     932                        fullscreenAct->setEnabled(true);
     933
     934                        detached_label->hide();
     935
     936                        mplayerwindow->setWindowTitle(QString::null);
     937                        mplayerwindow->setParent(panel);
     938                        panel->layout()->addWidget(mplayerwindow);
     939                }
     940        }
     941}
     942
     943/*
     944void BaseGuiPlus::toggleFullscreen(bool b) {
     945        qDebug() << "BaseGuiPlus::toggleFullscreen:" << b;
     946        if (!isVideoDetached()) {
     947                BaseGui::toggleFullscreen(b);
     948        } else {
     949                if (b == pref->fullscreen) return;
     950                pref->fullscreen = b;
     951
     952                if (pref->fullscreen) {
     953                        //aboutToEnterFullscreen();
     954                        mplayerwindow->showFullScreen();
     955                } else {
     956                        mplayerwindow->showNormal();
     957                        //aboutToExitFullscreen();
     958                }
     959        }
     960}
     961*/
    643962#endif
    644963
Note: See TracChangeset for help on using the changeset viewer.