diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | c90c389a8a8d9d8661e9772ec4144c5cf2039f23 (patch) | |
tree | 6d8391395bce9eaea4ad78958617edb20c6a7573 /kreversi/kzoommainwindow.cpp | |
download | tdegames-c90c389a8a8d9d8661e9772ec4144c5cf2039f23.tar.gz tdegames-c90c389a8a8d9d8661e9772ec4144c5cf2039f23.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdegames@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kreversi/kzoommainwindow.cpp')
-rw-r--r-- | kreversi/kzoommainwindow.cpp | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/kreversi/kzoommainwindow.cpp b/kreversi/kzoommainwindow.cpp new file mode 100644 index 00000000..4da50935 --- /dev/null +++ b/kreversi/kzoommainwindow.cpp @@ -0,0 +1,135 @@ +/* + This file is part of the KDE games library + Copyright (C) 2004 Nicolas Hadacek ([email protected]) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License version 2 as published by the Free Software Foundation. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + + +#include "kzoommainwindow.h" +#include "kzoommainwindow.moc" + +#include <kaction.h> +#include <kstdaction.h> +#include <kmenubar.h> +#include <kcmenumngr.h> + + +KZoomMainWindow::KZoomMainWindow(uint min, uint max, uint step, + const char *name) + : KMainWindow(0, name), m_zoomStep(step), m_minZoom(min), m_maxZoom(max) +{ + installEventFilter(this); + + m_zoomInAction = + KStdAction::zoomIn(this, SLOT(zoomIn()), actionCollection()); + m_zoomOutAction = + KStdAction::zoomOut(this, SLOT(zoomOut()), actionCollection()); + m_menu = + KStdAction::showMenubar(this, SLOT(toggleMenubar()), actionCollection()); +} + + +void KZoomMainWindow::init(const char *popupName) +{ + // zoom + setZoom(readZoomSetting()); + + // menubar + m_menu->setChecked( menubarVisibleSetting() ); + toggleMenubar(); + + // context popup + if (popupName) { + QPopupMenu *popup = + static_cast<QPopupMenu *>(factory()->container(popupName, this)); + Q_ASSERT(popup); + if (popup) + KContextMenuManager::insert(this, popup); + } +} + +void KZoomMainWindow::addWidget(QWidget *widget) +{ + widget->adjustSize(); + + QWidget *tlw = widget->topLevelWidget(); + KZoomMainWindow *zm = + static_cast<KZoomMainWindow *>(tlw->qt_cast("KZoomMainWindow")); + + Q_ASSERT(zm); + zm->m_widgets.append(widget); + connect(widget, SIGNAL(destroyed()), zm, SLOT(widgetDestroyed())); +} + + +void KZoomMainWindow::widgetDestroyed() +{ + m_widgets.remove(static_cast<const QWidget *>(sender())); +} + + +bool KZoomMainWindow::eventFilter(QObject *o, QEvent *e) +{ + if ( e->type()==QEvent::LayoutHint ) + setFixedSize(minimumSize()); // because K/QMainWindow + // does not manage fixed central widget + // with hidden menubar... + return KMainWindow::eventFilter(o, e); +} + + +void KZoomMainWindow::setZoom(uint zoom) +{ + m_zoom = zoom; + writeZoomSetting(m_zoom); + + QPtrListIterator<QWidget> it(m_widgets); + for (; it.current(); ++it) + (*it)->adjustSize(); + + m_zoomOutAction->setEnabled( m_zoom > m_minZoom ); + m_zoomInAction->setEnabled( m_zoom < m_maxZoom ); +} + + +void KZoomMainWindow::zoomIn() +{ + setZoom(m_zoom + m_zoomStep); +} + + +void KZoomMainWindow::zoomOut() +{ + Q_ASSERT( m_zoom >= m_zoomStep ); + setZoom(m_zoom - m_zoomStep); +} + + +void KZoomMainWindow::toggleMenubar() +{ + if ( m_menu->isChecked() ) + menuBar()->show(); + else + menuBar()->hide(); +} + + +bool KZoomMainWindow::queryExit() +{ + writeMenubarVisibleSetting(m_menu->isChecked()); + + return KMainWindow::queryExit(); +} |