File indexing completed on 2024-04-21 15:38:23
0001 /** 0002 * Copyright (C) 2002-2003 by Koos Vriezen <koos.vriezen@gmail.com> 0003 * 0004 * This library is free software; you can redistribute it and/or 0005 * modify it under the terms of the GNU Library General Public 0006 * License version 2 as published by the Free Software Foundation. 0007 * 0008 * This library is distributed in the hope that it will be useful, 0009 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0010 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 0011 * Library General Public License for more details. 0012 * 0013 * You should have received a copy of the GNU Library General Public License 0014 * along with this library; see the file COPYING.LIB. If not, write to 0015 * the Free Software Foundation, Inc., 51 Franklin Steet, Fifth Floor, 0016 * Boston, MA 02110-1301, USA. 0017 **/ 0018 0019 #include <stdio.h> 0020 #include <math.h> 0021 0022 #include "config-kmplayer.h" 0023 // include files for Qt 0024 #include <qstyle.h> 0025 #include <qtimer.h> 0026 #include <qpainter.h> 0027 #include <qmetaobject.h> 0028 #include <qlayout.h> 0029 #include <qpixmap.h> 0030 #include <qtextedit.h> 0031 #include <qtooltip.h> 0032 #include <qapplication.h> 0033 #include <qcursor.h> 0034 #include <qkeysequence.h> 0035 #include <qslider.h> 0036 #include <qlabel.h> 0037 #include <qdatastream.h> 0038 #include <QContextMenuEvent> 0039 #include <QMimeData> 0040 #include <QDropEvent> 0041 #include <QAction> 0042 #include <QDragEnterEvent> 0043 #include <QFontDatabase> 0044 #include <QTextDocument> 0045 #include <QTextCursor> 0046 #include <qcursor.h> 0047 #include <qclipboard.h> 0048 #include <kicon.h> 0049 #include <QMainWindow> 0050 #include <QDockWidget> 0051 0052 #include <kiconloader.h> 0053 #include <kstatusbar.h> 0054 #include <kdebug.h> 0055 #include <klocalizedstring.h> 0056 #include <kactioncollection.h> 0057 #include <kshortcut.h> 0058 #include <kfinddialog.h> 0059 0060 #include "kmplayerview.h" 0061 #include "kmplayercontrolpanel.h" 0062 #include "playlistview.h" 0063 #include "viewarea.h" 0064 #include <solid/powermanagement.h> 0065 0066 /* mouse invisible: define the time (in 1/1000 seconds) before mouse goes invisible */ 0067 0068 0069 using namespace KMPlayer; 0070 0071 //------------------------------------------------------------------------- 0072 0073 KDE_NO_CDTOR_EXPORT PictureWidget::PictureWidget (QWidget * parent, View * view) 0074 : QWidget (parent), m_view (view) { 0075 setAutoFillBackground (true); 0076 } 0077 0078 KDE_NO_EXPORT void PictureWidget::mousePressEvent (QMouseEvent *) { 0079 m_view->emitPictureClicked (); 0080 } 0081 0082 KDE_NO_EXPORT void PictureWidget::mouseMoveEvent (QMouseEvent *e) { 0083 if (e->buttons () == Qt::NoButton) 0084 m_view->mouseMoved (e->x (), e->y ()); 0085 } 0086 0087 //----------------------------------------------------------------------------- 0088 0089 KDE_NO_CDTOR_EXPORT TextEdit::TextEdit (QWidget * parent, View * view) : QTextEdit (parent), m_view (view) { 0090 #if QT_VERSION > 0x040399 0091 setAttribute (Qt::WA_NativeWindow); 0092 setAttribute(Qt::WA_DontCreateNativeAncestors); 0093 #endif 0094 setReadOnly (true); 0095 QPalette p=palette(); 0096 p.setColor (QPalette::Active, QPalette::Base, QColor (Qt::black)); 0097 p.setColor (QPalette::Active, QPalette::Foreground, (QColor (0xB2, 0xB2, 0xB2))); 0098 setPalette (p); 0099 } 0100 0101 KDE_NO_EXPORT void TextEdit::contextMenuEvent (QContextMenuEvent * e) { 0102 m_view->controlPanel ()->popupMenu->exec (e->globalPos ()); 0103 } 0104 0105 //----------------------------------------------------------------------------- 0106 0107 KDE_NO_CDTOR_EXPORT InfoWindow::InfoWindow (QWidget *, View * view) 0108 : m_view (view) { 0109 setReadOnly (true); 0110 //setLinkUnderline (false); 0111 } 0112 0113 KDE_NO_EXPORT void InfoWindow::contextMenuEvent (QContextMenuEvent * e) { 0114 m_view->controlPanel ()->popupMenu->exec (e->globalPos ()); 0115 } 0116 0117 //----------------------------------------------------------------------------- 0118 0119 KDE_NO_CDTOR_EXPORT View::View (QWidget *parent) 0120 : KMediaPlayer::View (parent), 0121 m_control_panel (0L), 0122 m_status_bar (0L), 0123 m_controlpanel_mode (CP_Show), 0124 m_old_controlpanel_mode (CP_Show), 0125 m_statusbar_mode (SB_Hide), 0126 controlbar_timer (0), 0127 infopanel_timer (0), 0128 m_restore_state_timer(0), 0129 m_powerManagerStopSleep( -1 ), 0130 m_keepsizeratio (false), 0131 m_playing (false), 0132 m_tmplog_needs_eol (false), 0133 m_revert_fullscreen (false), 0134 m_no_info (false), 0135 m_edit_mode (false) 0136 { 0137 setAttribute (Qt::WA_NoSystemBackground, true); 0138 setAutoFillBackground (false); 0139 setAcceptDrops(true); 0140 } 0141 0142 KDE_NO_EXPORT void View::dropEvent (QDropEvent * de) { 0143 QList<QUrl> uris = de->mimeData()->urls(); 0144 if (uris.isEmpty() || !uris[0].isValid()) { 0145 QString text = de->mimeData()->text(); 0146 if (!text.isEmpty()) 0147 uris.push_back(QUrl::fromUserInput(text)); 0148 } 0149 if (uris.size () > 0) { 0150 //m_widgetstack->currentWidget ()->setFocus (); 0151 emit urlDropped (uris); 0152 de->accept (); 0153 } 0154 } 0155 0156 KDE_NO_EXPORT void View::dragEnterEvent (QDragEnterEvent* dee) { 0157 if (m_playlist->isDragValid (dee)) 0158 dee->accept (); 0159 } 0160 0161 void View::initDock (QWidget *central) { 0162 m_dockarea = new QMainWindow; 0163 m_dockarea->setDockNestingEnabled(true); 0164 m_dockarea->setCentralWidget (central); 0165 central->setVisible (true); 0166 0167 m_dock_playlist = new QDockWidget (i18n ("Playlist")); 0168 if (central != m_playlist) 0169 m_dock_playlist->setWidget (m_playlist); 0170 m_dock_playlist->setObjectName ("playlist"); 0171 0172 m_dock_infopanel = new QDockWidget (i18n ("Information")); 0173 if (central != m_infopanel) 0174 m_dock_infopanel->setWidget (m_infopanel); 0175 m_dock_infopanel->setObjectName ("infopanel"); 0176 0177 m_dock_playlist->hide (); 0178 m_dock_infopanel->hide (); 0179 0180 m_dockarea->addDockWidget (Qt::BottomDockWidgetArea, m_dock_infopanel); 0181 m_dockarea->addDockWidget (Qt::LeftDockWidgetArea, m_dock_playlist); 0182 0183 layout ()->addWidget (m_dockarea); 0184 0185 m_dockarea->setWindowFlags (Qt::SubWindow); 0186 m_dockarea->show (); 0187 0188 m_view_area->resizeEvent (0L); 0189 } 0190 0191 KDE_NO_EXPORT void View::init (KActionCollection *action_collection, bool transparent) { 0192 QVBoxLayout * viewbox = new QVBoxLayout; 0193 viewbox->setContentsMargins (0, 0, 0, 0); 0194 setLayout (viewbox); 0195 m_view_area = new ViewArea (NULL, this, !transparent); 0196 m_playlist = new PlayListView (NULL, this, action_collection); 0197 0198 m_picture = new PictureWidget (m_view_area, this); 0199 m_picture->hide (); 0200 m_control_panel = new ControlPanel (m_view_area, this); 0201 m_control_panel->setMaximumHeight(controlPanel ()->maximumSize ().height ()); 0202 m_status_bar = new StatusBar (m_view_area); 0203 m_status_bar->clearMessage(); 0204 m_status_bar->setAutoFillBackground (true); 0205 QSize sbsize = m_status_bar->sizeHint (); 0206 m_status_bar->hide (); 0207 m_status_bar->setMaximumHeight(sbsize.height ()); 0208 setVideoWidget (m_view_area); 0209 0210 m_multiedit = new TextEdit (m_view_area, this); 0211 QFont fnt = QFontDatabase::systemFont(QFontDatabase::FixedFont); 0212 m_multiedit->setFont (fnt); 0213 m_multiedit->hide (); 0214 0215 m_infopanel = new InfoWindow (NULL, this); 0216 0217 connect (m_control_panel->scale_slider, SIGNAL (valueChanged (int)), 0218 m_view_area, SLOT (scale (int))); 0219 setFocusPolicy (Qt::ClickFocus); 0220 0221 setAcceptDrops (true); 0222 } 0223 0224 KDE_NO_CDTOR_EXPORT View::~View () { 0225 if (m_view_area->parent () != this) 0226 delete m_view_area; 0227 } 0228 0229 KDE_NO_EXPORT void View::setEraseColor (const QColor & /*color*/) { 0230 /*KMediaPlayer::View::setEraseColor (color); 0231 if (statusBar ()) { 0232 statusBar ()->setEraseColor (color); 0233 controlPanel ()->setEraseColor (color); 0234 }*/ 0235 } 0236 0237 void View::setInfoMessage (const QString & msg) { 0238 bool ismain = m_dockarea->centralWidget () == m_infopanel; 0239 if (msg.isEmpty ()) { 0240 if (!ismain && !m_edit_mode && !infopanel_timer) 0241 infopanel_timer = startTimer (0); 0242 m_infopanel->clear (); 0243 } else if (ismain || !m_no_info) { 0244 if (!ismain && !m_edit_mode && !m_dock_infopanel->isVisible ()) 0245 m_dock_infopanel->show (); 0246 if (m_edit_mode) 0247 m_infopanel->setPlainText (msg); 0248 else 0249 m_infopanel->setHtml (msg); 0250 } 0251 } 0252 0253 void View::setStatusMessage (const QString & msg) { 0254 if (m_statusbar_mode != SB_Hide) 0255 m_status_bar->showMessage(msg); 0256 } 0257 0258 void View::toggleShowPlaylist () { 0259 if (m_controlpanel_mode == CP_Only) 0260 return; 0261 if (m_dock_playlist->isVisible ()) 0262 m_dock_playlist->hide (); 0263 else 0264 m_dock_playlist->show(); 0265 /*if (m_dock_playlist->mayBeShow ()) { 0266 if (m_dock_playlist->isDockBackPossible ()) 0267 m_dock_playlist->dockBack (); 0268 else { 0269 bool horz = true; 0270 QStyle *style = m_playlist->style (); 0271 int h = style->pixelMetric (QStyle::PM_ScrollBarExtent, NULL, m_playlist); 0272 h += style->pixelMetric (QStyle::PM_DockWidgetFrameWidth, NULL, m_playlist); 0273 h +=style->pixelMetric (QStyle::PM_DockWidgetHandleExtent, NULL, m_playlist); 0274 for (Q3ListViewItem *i=m_playlist->firstChild();i;i=i->itemBelow()) { 0275 h += i->height (); 0276 if (h > int (0.25 * height ())) { 0277 horz = false; 0278 break; 0279 } 0280 } 0281 int perc = 30; 0282 if (horz && 100 * h / height () < perc) 0283 perc = 100 * h / height (); 0284 m_dock_playlist->manualDock (m_dock_video, horz ? K3DockWidget::DockTop : K3DockWidget::DockLeft, perc); 0285 } 0286 } else 0287 m_dock_playlist->undock ();*/ 0288 } 0289 0290 void View::setViewOnly () { 0291 m_dock_playlist->hide (); 0292 m_dock_infopanel->hide (); 0293 } 0294 0295 void View::setEditMode (TopPlayItem *ri, bool enable) { 0296 m_edit_mode = enable; 0297 m_infopanel->setReadOnly (!m_edit_mode); 0298 if (m_edit_mode && !m_dock_infopanel->isVisible ()) 0299 m_dock_infopanel->show (); 0300 //if (m_edit_mode && m_dock_infopanel->mayBeShow ()) 0301 // m_dock_infopanel->manualDock(m_dock_video,K3DockWidget::DockBottom,50); 0302 m_playlist->showAllNodes (ri, m_edit_mode); 0303 } 0304 0305 #ifndef KMPLAYER_WITH_CAIRO 0306 bool View::setPicture (const QString & path) { 0307 if (path.isEmpty ()) 0308 m_image = QImage (); 0309 else { 0310 m_image = QImage (path); 0311 if (m_image.isNull ()) 0312 kDebug() << "View::setPicture failed " << path; 0313 else if (m_image.depth () < 24) 0314 m_image = m_image.convertToFormat (QImage::Format_RGB32); 0315 } 0316 m_picture->setVisible (!m_image.isNull ()); 0317 if (m_image.isNull ()) { 0318 m_view_area->setVideoWidgetVisible (true); 0319 } else { 0320 QPalette palette = m_picture->palette (); 0321 palette.setColor (m_picture->backgroundRole(), viewArea()->palette ().color (backgroundRole ())); 0322 palette.setBrush (m_picture->backgroundRole(), QBrush (m_image)); 0323 m_picture->setPalette (palette); 0324 m_view_area->setVideoWidgetVisible (false); 0325 controlPanel ()->raise (); 0326 setControlPanelMode (CP_AutoHide); 0327 } 0328 return !m_image.isNull (); 0329 } 0330 #endif 0331 0332 void View::toggleVideoConsoleWindow () { 0333 if (m_multiedit->isVisible ()) { 0334 m_multiedit->hide (); 0335 m_view_area->setVideoWidgetVisible (true); 0336 m_control_panel->videoConsoleAction->setIcon(QIcon::fromTheme(("konsole"))); 0337 m_control_panel->videoConsoleAction->setText (i18n ("Con&sole")); 0338 delayedShowButtons (false); 0339 } else { 0340 m_control_panel->videoConsoleAction->setIcon(QIcon::fromTheme("video")); 0341 m_control_panel->videoConsoleAction->setText (i18n ("V&ideo")); 0342 m_multiedit->show (); 0343 m_multiedit->raise (); 0344 m_view_area->setVideoWidgetVisible (false); 0345 addText (QString (""), false); 0346 if (m_controlpanel_mode == CP_AutoHide && m_playing) 0347 m_control_panel->show(); 0348 } 0349 updateLayout (); 0350 emit windowVideoConsoleToggled (m_multiedit->isVisible ()); 0351 } 0352 0353 void View::setControlPanelMode (ControlPanelMode m) { 0354 if (controlbar_timer) { 0355 killTimer (controlbar_timer); 0356 controlbar_timer = 0L; 0357 } 0358 m_old_controlpanel_mode = m_controlpanel_mode = m; 0359 if (m_playing && isFullScreen()) 0360 m_controlpanel_mode = CP_AutoHide; 0361 if ((m_controlpanel_mode == CP_Show || m_controlpanel_mode == CP_Only) && 0362 !m_control_panel->isVisible ()) { 0363 m_control_panel->show (); 0364 } else if (m_controlpanel_mode == CP_AutoHide) { 0365 if (!m_image.isNull () || (m_playing && !m_multiedit->isVisible ())) 0366 delayedShowButtons (false); 0367 else if (!m_control_panel->isVisible ()) { 0368 m_control_panel->show (); 0369 } 0370 } else if (m_controlpanel_mode == CP_Hide) { 0371 bool vis = m_control_panel->isVisible(); 0372 m_control_panel->hide (); 0373 if (vis) 0374 m_view_area->resizeEvent (0L); 0375 } 0376 m_view_area->resizeEvent (0L); 0377 } 0378 0379 void View::setStatusBarMode (StatusBarMode m) { 0380 m_statusbar_mode = m; 0381 m_status_bar->setVisible (m != SB_Hide); 0382 m_view_area->resizeEvent (0L); 0383 } 0384 0385 KDE_NO_EXPORT void View::delayedShowButtons (bool show) { 0386 if ((show && m_control_panel->isVisible ()) || 0387 (!show && !m_control_panel->isVisible ())) { 0388 if (controlbar_timer) { 0389 killTimer (controlbar_timer); 0390 controlbar_timer = 0; 0391 } 0392 if (!show) 0393 m_control_panel->hide (); // for initial race 0394 } else if (m_controlpanel_mode == CP_AutoHide && 0395 (m_playing || !m_image.isNull ()) && 0396 !m_multiedit->isVisible () && !controlbar_timer) { 0397 controlbar_timer = startTimer (500); 0398 } 0399 } 0400 0401 KDE_NO_EXPORT void View::mouseMoved (int, int y) { 0402 int h = m_view_area->height (); 0403 int vert_buttons_pos = h - statusBarHeight (); 0404 int cp_height = controlPanel ()->maximumSize ().height (); 0405 if (cp_height > int (0.25 * h)) 0406 cp_height = int (0.25 * h); 0407 delayedShowButtons (y > vert_buttons_pos-cp_height && y < vert_buttons_pos); 0408 } 0409 0410 KDE_NO_EXPORT void View::updateLayout () { 0411 if (m_controlpanel_mode == CP_Only) 0412 m_control_panel->setMaximumHeight(height()); 0413 m_view_area->resizeEvent (0L); 0414 } 0415 0416 void View::setKeepSizeRatio (bool b) { 0417 if (m_keepsizeratio != b) { 0418 m_keepsizeratio = b; 0419 updateLayout (); 0420 m_view_area->update (); 0421 } 0422 } 0423 0424 KDE_NO_EXPORT void View::timerEvent (QTimerEvent * e) { 0425 if (e->timerId () == controlbar_timer) { 0426 controlbar_timer = 0; 0427 if (m_playing || !m_image.isNull ()) { 0428 int vert_buttons_pos = m_view_area->height()-statusBarHeight (); 0429 QPoint mouse_pos = m_view_area->mapFromGlobal (QCursor::pos ()); 0430 int cp_height = m_control_panel->maximumSize ().height (); 0431 bool mouse_on_buttons = (//m_view_area->hasMouse () && 0432 mouse_pos.y () >= vert_buttons_pos-cp_height && 0433 mouse_pos.y ()<= vert_buttons_pos && 0434 mouse_pos.x () > 0 && 0435 mouse_pos.x () < m_control_panel->width()); 0436 if (mouse_on_buttons && !m_control_panel->isVisible ()) { 0437 m_control_panel->show (); 0438 m_view_area->resizeEvent (0L); 0439 } else if (!mouse_on_buttons && m_control_panel->isVisible ()) { 0440 m_control_panel->hide (); 0441 m_view_area->resizeEvent (0L); 0442 } 0443 } 0444 } else if (e->timerId () == infopanel_timer) { 0445 if (m_infopanel->document ()->isEmpty ()) 0446 m_dock_infopanel->hide (); 0447 //m_dock_infopanel->undock (); 0448 infopanel_timer = 0; 0449 } else if (e->timerId () == m_restore_state_timer) { 0450 m_view_area->setVisible(true); 0451 setControlPanelMode (m_old_controlpanel_mode); 0452 m_dockarea->restoreState(m_dock_state); 0453 m_restore_state_timer = 0; 0454 } 0455 killTimer (e->timerId ()); 0456 } 0457 0458 void View::addText (const QString & str, bool eol) { 0459 if (m_tmplog_needs_eol) 0460 tmplog += QChar ('\n'); 0461 tmplog += str; 0462 m_tmplog_needs_eol = eol; 0463 if (!m_multiedit->isVisible () && tmplog.size () < 7500) 0464 return; 0465 if (eol) { 0466 if (m_multiedit->document ()->isEmpty ()) 0467 m_multiedit->setPlainText (tmplog); 0468 else 0469 m_multiedit->append (tmplog); 0470 tmplog.truncate (0); 0471 m_tmplog_needs_eol = false; 0472 } else { 0473 int pos = tmplog.lastIndexOf (QChar ('\n')); 0474 if (pos >= 0) { 0475 m_multiedit->append (tmplog.left (pos)); 0476 tmplog = tmplog.mid (pos+1); 0477 } 0478 } 0479 QTextCursor cursor = m_multiedit->textCursor (); 0480 cursor.movePosition (QTextCursor::End); 0481 cursor.movePosition (QTextCursor::PreviousBlock, QTextCursor::MoveAnchor, 5000); 0482 cursor.movePosition (QTextCursor::Start, QTextCursor::KeepAnchor); 0483 cursor.removeSelectedText (); 0484 cursor.movePosition (QTextCursor::End); 0485 m_multiedit->setTextCursor (cursor); 0486 } 0487 0488 KDE_NO_EXPORT void View::videoStart () { 0489 if (!isFullScreen () && m_dockarea->centralWidget () != m_view_area) { 0490 // restore from an info or playlist only setting 0491 if (m_dockarea->centralWidget () == m_playlist) 0492 m_dock_playlist->setWidget (m_playlist); 0493 else if (m_dockarea->centralWidget () == m_infopanel) 0494 m_dock_infopanel->setWidget (m_infopanel); 0495 else 0496 m_status_bar->setVisible (false); 0497 m_dockarea->setCentralWidget (m_view_area); 0498 } 0499 if (m_controlpanel_mode == CP_Only) { 0500 m_control_panel->setMaximumHeight(controlPanel()->preferredHeight()); 0501 setControlPanelMode (CP_Show); 0502 } 0503 } 0504 0505 KDE_NO_EXPORT void View::playingStart () { 0506 if (m_playing) 0507 return; //FIXME: make symetric with playingStop 0508 m_playing = true; 0509 m_revert_fullscreen = !isFullScreen(); 0510 setControlPanelMode (m_old_controlpanel_mode); 0511 } 0512 0513 KDE_NO_EXPORT void View::playingStop () { 0514 if (m_controlpanel_mode == CP_AutoHide && m_image.isNull ()) { 0515 m_control_panel->show (); 0516 //m_view_area->setMouseTracking (false); 0517 } 0518 if (controlbar_timer) { 0519 killTimer (controlbar_timer); 0520 controlbar_timer = 0; 0521 } 0522 m_playing = false; 0523 m_view_area->resizeEvent (0L); 0524 } 0525 0526 KDE_NO_EXPORT void View::leaveEvent (QEvent *) { 0527 delayedShowButtons (false); 0528 } 0529 0530 KDE_NO_EXPORT void View::reset () { 0531 if (m_revert_fullscreen && isFullScreen ()) 0532 m_control_panel->fullscreenAction->activate (QAction::Trigger); 0533 //m_view_area->fullScreen (); 0534 playingStop (); 0535 } 0536 0537 bool View::isFullScreen () const { 0538 return m_view_area->isFullScreen (); 0539 } 0540 0541 void View::fullScreen () { 0542 if (m_restore_state_timer) { 0543 killTimer (m_restore_state_timer); 0544 m_restore_state_timer = 0; 0545 } 0546 if (!m_view_area->isFullScreen()) { 0547 m_sreensaver_disabled = false; 0548 m_powerManagerStopSleep = Solid::PowerManagement::beginSuppressingSleep("KMplayer: watching a film"); 0549 /*QByteArray data, replydata; 0550 QCString replyType; 0551 if (kapp->dcopClient ()->call ("kdesktop", "KScreensaverIface", 0552 "isEnabled()", data, replyType, replydata)) { 0553 bool enabled; 0554 QDataStream replystream (replydata, IO_ReadOnly); 0555 replystream >> enabled; 0556 if (enabled) 0557 m_sreensaver_disabled = kapp->dcopClient()->send 0558 ("kdesktop", "KScreensaverIface", "enable(bool)", "false"); 0559 }*/ 0560 //if (m_keepsizeratio && m_viewer->aspect () < 0.01) 0561 // m_viewer->setAspect (1.0 * m_viewer->width() / m_viewer->height()); 0562 m_dock_state = m_dockarea->saveState(); 0563 m_dock_playlist->hide(); 0564 m_dock_infopanel->hide(); 0565 m_view_area->fullScreen(); 0566 m_control_panel->zoomAction->setVisible (false); 0567 //if (m_viewer->isVisible ()) 0568 // m_viewer->setFocus (); 0569 } else { 0570 Solid::PowerManagement::stopSuppressingSleep(m_powerManagerStopSleep); 0571 // if (m_sreensaver_disabled) 0572 // m_sreensaver_disabled = !kapp->dcopClient()->send 0573 // ("kdesktop", "KScreensaverIface", "enable(bool)", "true"); 0574 m_view_area->fullScreen(); 0575 m_control_panel->zoomAction->setVisible (true); 0576 m_restore_state_timer = startTimer(100); //dockArea()->restoreState(m_dock_state); 0577 } 0578 setControlPanelMode (m_old_controlpanel_mode); 0579 emit fullScreenChanged (); 0580 } 0581 0582 KDE_NO_EXPORT int View::statusBarHeight () const { 0583 if (statusBar()->isVisible () && !viewArea()->isFullScreen ()) { 0584 if (statusBarMode () == SB_Only) 0585 return height (); 0586 else 0587 return statusBar()->maximumSize ().height (); 0588 } 0589 return 0; 0590 } 0591 0592 #include "kmplayerview.moc"