// // C++ Implementation: komposefullscreenwidget // // Description: // // // Author: Hans Oischinger , (C) 2004 // // Copyright: See COPYING file that comes with this distribution // // #include "komposefullscreenwidget.h" #include "komposedesktopwidget.h" #include "komposetaskwidget.h" #include "komposeviewmanager.h" #include "komposetaskmanager.h" #include "komposeglobal.h" #include "komposelayout.h" #include #include #include #include #include #include #include #include #include #include #include #include #include KomposeFullscreenWidget::KomposeFullscreenWidget( int displayType, KomposeLayout *l ) : KomposeTaskContainerWidget( -1, 0, l ), type(displayType) { // if ( TQT_VERSION < 0x030300 ) /* use showMaximized instead of setWindowState to make it compile on qt 3.1 or whatever */ // showMaximized(); // KWin::setState( winId(), NET::KeepAbove ); // Set Desktop background as our background setBackgroundMode( TQt::FixedPixmap ); // setBackgroundPixmap(*(KomposeGlobal::instance()->getDesktopBgPixmap())); rootpix = new KRootPixmap (this); rootpix->start(); initMenu(); initView(); //showFullScreen(); // Alternate showFullscreen setWindowState(windowState() | WindowFullScreen); //setWFlags(WStyle_NoBorder); kdDebug() << KomposeSettings::instance()->getViewScreen() << endl; if (KomposeSettings::instance()->getViewScreen() == -1) setGeometry( TDEGlobalSettings::desktopGeometry( this ) ); else { TQDesktopWidget deskwidget; TQRect deskRect = deskwidget.screenGeometry(KomposeSettings::instance()->getViewScreen()); setGeometry(deskRect); kdDebug() << deskRect << endl; } if (!isTopLevel()) TQApplication::sendPostedEvents(this, TQEvent::ShowFullScreen); setActiveWindow(); KWin::setOnAllDesktops( winId(), true ); } KomposeFullscreenWidget::~KomposeFullscreenWidget() { menu->deleteLater(); } void KomposeFullscreenWidget::initMenu() { menu = new TDEPopupMenu(); KomposeGlobal::instance()->getActShowWorldView()->plug(menu); KomposeGlobal::instance()->getActShowVirtualDesktopView()->plug(menu); KomposeGlobal::instance()->getActShowCurrentDesktopView()->plug(menu); menu->insertSeparator(); KomposeGlobal::instance()->getActPreferencesDialog()->plug(menu); KomposeGlobal::instance()->getActConfigGlobalShortcuts()->plug(menu); KomposeGlobal::instance()->getActAboutDlg()->plug(menu); //menu->insertSeparator(); //KomposeGlobal::instance()->getActQuit()->plug(menu); } void KomposeFullscreenWidget::destroyChildWidgets() { setUpdatesEnabled( false ); KomposeWidget *child; TQPtrListIterator it( *(layout->getManagedWidgets())); while ( (child = it.current()) != 0 ) { ++it; layout->remove(child); dynamic_cast(child)->deleteLater(); } setUpdatesEnabled( true ); kdDebug() << "KomposeFullscreenWidget::destroyChildWidgets() - all children destroyed" << endl; } void KomposeFullscreenWidget::initView() { setCursor( KCursor::waitCursor() ); destroyChildWidgets(); if ( type == KOMPOSEDISPLAY_VIRTUALDESKS ) { disconnect( KomposeTaskManager::instance(), SIGNAL( newTask( KomposeTask* ) ), this, SLOT( createTaskWidget( KomposeTask* ) ) ); layout->setType( TLAYOUT_TASKCONTAINERS ); setDesktop( -2 ); createDesktopWidgets(); } else if ( type == KOMPOSEDISPLAY_WORLD ) { layout->setType( TLAYOUT_GENERIC ); setDesktop( -1 ); createTaskWidgets(); connect( KomposeTaskManager::instance(), SIGNAL( newTask( KomposeTask* ) ), this, SLOT( createTaskWidget( KomposeTask* ) ) ); } else if ( type == KOMPOSEDISPLAY_CURRENTDESK ) { layout->setType( TLAYOUT_GENERIC ); setDesktop( KomposeViewManager::instance()->getDesktopBeforeSnaps() ); createTaskWidgets(); connect( KomposeTaskManager::instance(), SIGNAL( newTask( KomposeTask* ) ), this, SLOT( createTaskWidget( KomposeTask* ) ) ); } unsetCursor(); } void KomposeFullscreenWidget::createDesktopWidgets() { kdDebug() << "KomposeFullscreenWidget::createDesktopWidgets()" << endl; // Create a Widget for every desktop for (int i=0; i < KomposeTaskManager::instance()->getNumDesktops(); ++i) { //int row = i / 2; //int col = i % 2; //kdDebug() << "rc %d %d", row, col); KomposeDesktopWidget *desktop = new KomposeDesktopWidget(i, this ); connect(desktop, SIGNAL(contentsChanged()), layout, SLOT(arrangeLayout()) ); desktop->show(); } } void KomposeFullscreenWidget::mouseReleaseEvent (TQMouseEvent * ) {} void KomposeFullscreenWidget::mousePressEvent ( TQMouseEvent * e ) { if ( !rect().contains( e->pos() ) ) return; switch ( e->button() ) { case LeftButton: kdDebug() << "KomposeFullscreenWidget::mousePressEvent - Clicked outside of all tasks - Closing view" << endl; KomposeViewManager::instance()->closeCurrentView(); break; case MidButton: // fall through case RightButton: menu->popup( e->globalPos() ); break; default: // nothing break; } } void KomposeFullscreenWidget::keyReleaseEvent ( TQKeyEvent * e ) { if ( e->key() == TQt::Key_Escape ) { kdDebug() << "KomposeFullscreenWidget::keyReleaseEvent - Esc key pressed - Closing view" << endl; KomposeViewManager::instance()->closeCurrentView(); e->accept(); } else { kdDebug() << "KomposeFullscreenWidget::keyReleaseEvent - ignored..." << endl; e->ignore(); } KomposeTaskContainerWidget::keyReleaseEvent(e); } int KomposeFullscreenWidget::getHeightForWidth ( int w ) const { return (int)(((double)w / (double)width()) * (double)height()); } int KomposeFullscreenWidget::getWidthForHeight ( int h ) const { return (int)(((double)h / (double)height()) * (double)width()); } double KomposeFullscreenWidget::getAspectRatio() { return (double)width() / (double)height(); } // void KomposeFullscreenWidget::paintEvent ( TQPaintEvent * ) // { // TQPainter p( this ); // p.drawPixmap(rect(), *(KomposeGlobal::instance()->getDesktopBgPixmap())); // p.end(); // } #include "komposefullscreenwidget.moc"