summaryrefslogtreecommitdiffstats
path: root/kuickshow/src/imagewindow.h
diff options
context:
space:
mode:
Diffstat (limited to 'kuickshow/src/imagewindow.h')
-rw-r--r--kuickshow/src/imagewindow.h176
1 files changed, 176 insertions, 0 deletions
diff --git a/kuickshow/src/imagewindow.h b/kuickshow/src/imagewindow.h
new file mode 100644
index 0000000..4a823a0
--- /dev/null
+++ b/kuickshow/src/imagewindow.h
@@ -0,0 +1,176 @@
+/* This file is part of the KDE project
+ Copyright (C) 1998-2003 Carsten Pfeiffer <pfeiffer@kde.org>
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public
+ License as published by the Free Software Foundation, version 2.
+
+ This program 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; see the file COPYING. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef IMAGEWINDOW_H
+#define IMAGEWINDOW_H
+
+#include <qevent.h>
+
+#include <kaction.h>
+#include <kurl.h>
+
+#include "imlibwidget.h"
+
+class QCursor;
+class QPopupMenu;
+class QRect;
+class QString;
+class QTimer;
+class QWidget;
+
+class KuickFile;
+
+class ImageWindow : public ImlibWidget
+{
+ Q_OBJECT
+
+public:
+ ImageWindow( ImData *_idata, ImlibData *id, QWidget *parent=0,
+ const char *name=0 );
+ ImageWindow( ImData *_idata=0, QWidget *parent=0, const char *name=0 );
+
+ bool showNextImage( KuickFile * file );
+ bool showNextImage( const KURL& url );
+ void scrollImage( int, int, bool restrict=true );
+ void setFullscreen( bool );
+ bool isFullscreen() const { return myIsFullscreen; }
+
+ void addBrightness( int );
+ void addContrast( int );
+ void addGamma( int );
+
+ void updateActions();
+
+ KActionCollection * actionCollection() const { return m_actions; }
+
+ /**
+ * Resizes image to @p w, @p h, but takes into account the workarea, so
+ * it won't ever get a bigger size than the workarea.
+ */
+ void resizeOptimal( int w, int h );
+ void autoScale( KuickImage *kuim );
+ virtual bool autoRotate( KuickImage *kuim );
+
+ bool saveImage( const KURL& dest, bool keepOriginalSize );
+
+public slots:
+ void zoomIn();
+ void zoomOut();
+ void moreBrightness();
+ void lessBrightness();
+ void moreContrast();
+ void lessContrast();
+ void moreGamma();
+ void lessGamma();
+ void scrollUp();
+ void scrollDown();
+ void scrollLeft();
+ void scrollRight();
+ void printImage();
+ void toggleFullscreen();
+ void maximize();
+ void imageDelete();
+ void imageTrash();
+
+signals:
+ void sigFocusWindow( ImageWindow * );
+ // go advance images back/forth
+ void requestImage( ImageWindow *, int advance );
+ void deleteImage(ImageWindow *viewer);
+ void trashImage(ImageWindow *viewer);
+
+protected:
+ ~ImageWindow(); // deletes itself, just call close( true );
+
+ void init();
+ void centerImage();
+ void addAlternativeShortcut( KAction *action, int key );
+ virtual void updateGeometry( int imWidth, int imHeight );
+ virtual void loaded( KuickImage * );
+ virtual bool canZoomTo( int newWidth, int newHeight );
+ virtual void rotated( KuickImage *kuim, int rotation );
+
+ virtual void wheelEvent( QWheelEvent * );
+ virtual void keyPressEvent( QKeyEvent * );
+ virtual void keyReleaseEvent( QKeyEvent * );
+ virtual void mousePressEvent( QMouseEvent * );
+ virtual void mouseReleaseEvent( QMouseEvent * );
+ virtual void mouseMoveEvent( QMouseEvent * );
+ virtual void focusInEvent( QFocusEvent * );
+ virtual void resizeEvent( QResizeEvent * );
+ virtual void dragEnterEvent( QDragEnterEvent * );
+ virtual void dropEvent( QDropEvent * );
+ virtual void contextMenuEvent( QContextMenuEvent * );
+
+ void showWindow();
+ enum KuickCursor { DefaultCursor = 0, ZoomCursor, MoveCursor };
+ void updateCursor( KuickCursor cursor = DefaultCursor );
+
+ // popupmenu entries
+ uint itemViewerZoomMax, itemViewerZoomOrig, itemViewerZoomIn;
+ uint itemViewerZoomOut, itemViewerFlipH, itemViewerProps;
+ uint itemRotate90, itemRotate180, itemRotate270;
+ uint itemViewerFlipV, itemViewerPrint;
+ uint itemViewerSave, itemViewerClose;
+ uint itemBrightnessPlus, itemBrightnessMinus;
+ uint itemContrastPlus, itemContrastMinus;
+ uint itemGammaPlus, itemGammaMinus;
+
+
+ uint xmove, ymove; // used for scrolling the image with the mouse
+ int xpos, ypos; // top left corner of the image
+ int xzoom, yzoom; // used for zooming the image with the mouse
+ uint xposPress, yposPress;
+
+
+ QPopupMenu *viewerMenu, *gammaMenu, *brightnessMenu, *contrastMenu;
+ QWidget *transWidget;
+
+
+protected slots:
+ void saveImage();
+ void slotRequestNext() { emit requestImage( this, +1 ); }
+ void slotRequestPrevious() { emit requestImage( this, -1 ); }
+ void reload();
+ void slotProperties();
+ void pauseSlideShow();
+ virtual void setBusyCursor();
+ virtual void restoreCursor();
+
+signals:
+ void pauseSlideShowSignal();
+
+private:
+ int desktopWidth( bool totalScreen = false ) const;
+ int desktopHeight( bool totalScreen = false ) const;
+ QSize maxImageSize() const;
+ void setupActions();
+ void setPopupMenu();
+ bool isCursorHidden() const;
+
+ bool myIsFullscreen;
+ int m_numHeads;
+ QString m_saveDirectory;
+
+ KActionCollection *m_actions;
+
+ static QCursor * s_handCursor;
+};
+
+
+#endif // IMAGEWINDOW_H