summaryrefslogtreecommitdiff
path: root/noncore/graphics/opie-eye/gui/imageview.cpp
Side-by-side diff
Diffstat (limited to 'noncore/graphics/opie-eye/gui/imageview.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/graphics/opie-eye/gui/imageview.cpp49
1 files changed, 41 insertions, 8 deletions
diff --git a/noncore/graphics/opie-eye/gui/imageview.cpp b/noncore/graphics/opie-eye/gui/imageview.cpp
index a20c879..c7e48cb 100644
--- a/noncore/graphics/opie-eye/gui/imageview.cpp
+++ b/noncore/graphics/opie-eye/gui/imageview.cpp
@@ -1,75 +1,96 @@
#include "imageview.h"
#include <opie2/odebug.h>
#include <opie2/oconfig.h>
#include <opie2/okeyconfigwidget.h>
#include <qpe/resource.h>
#include <qpe/qpeapplication.h>
#include <qpopupmenu.h>
#include <qtimer.h>
+#include <qaction.h>
using namespace Opie::Core;
ImageView::ImageView(Opie::Core::OConfig *cfg, QWidget* parent, const char* name, WFlags fl )
: Opie::MM::OImageScrollView(parent,name,fl)
{
m_viewManager = 0;
focus_in_count = 0;
m_cfg = cfg;
m_isFullScreen = false;
m_ignore_next_in = false;
m_slideTimer = 0;
QPEApplication::setStylusOperation(viewport(),QPEApplication::RightOnHold);
initKeys();
m_slideValue = 5;
+ m_gDisplayType = 0;
+ m_gPrevNext = 0;
+ m_hGroup = 0;
+}
+
+void ImageView::setMenuActions(QActionGroup*hGroup,QActionGroup*nextprevGroup, QActionGroup*disptypeGroup)
+{
+ m_gDisplayType = disptypeGroup;
+ m_gPrevNext = nextprevGroup;
+ m_hGroup = hGroup;
}
ImageView::~ImageView()
{
odebug << "Delete Imageview" << oendl;
delete m_viewManager;
}
Opie::Core::OKeyConfigManager* ImageView::manager()
{
if (!m_viewManager) {
initKeys();
}
return m_viewManager;
}
void ImageView::startSlide(int value)
{
if (!m_slideTimer) {
m_slideTimer = new QTimer(this);
}
m_slideValue=value;
connect(m_slideTimer,SIGNAL(timeout()),SLOT(nextSlide()));
m_slideTimer->start(m_slideValue*1000,true);
}
+void ImageView::stopSlide()
+{
+ if (!m_slideTimer) {
+ return;
+ }
+ m_slideTimer->stop();
+ delete m_slideTimer;
+ m_slideTimer = 0;
+}
+
void ImageView::nextSlide()
{
if (!m_slideTimer) {
return;
}
if (isHidden()) {
delete m_slideTimer;
m_slideTimer = 0;
return;
}
emit dispNext();
m_slideTimer->start(m_slideValue*1000,true);
}
void ImageView::initKeys()
{
odebug << "init imageview keys" << oendl;
if (!m_cfg) {
m_cfg = new Opie::Core::OConfig("phunkview");
m_cfg->setGroup("image_view_keys" );
}
Opie::Core::OKeyPair::List lst;
lst.append( Opie::Core::OKeyPair::upArrowKey() );
lst.append( Opie::Core::OKeyPair::downArrowKey() );
lst.append( Opie::Core::OKeyPair::leftArrowKey() );
@@ -121,60 +142,72 @@ void ImageView::initKeys()
m_viewManager->load();
}
void ImageView::keyReleaseEvent(QKeyEvent * e)
{
if (!e || e->state()!=0) {
return;
}
if (e->key()==Qt::Key_Escape && fullScreen()) emit hideMe();
}
void ImageView::slotShowImageInfo()
{
emit dispImageInfo(m_lastName);
}
void ImageView::contentsMousePressEvent ( QMouseEvent * e)
{
if (e->button()==1) {
return OImageScrollView::contentsMousePressEvent(e);
}
odebug << "Popup " << oendl;
QPopupMenu *m = new QPopupMenu(0);
if (!m) return;
- m->insertItem(tr("Toggle fullscreen"),this, SIGNAL(toggleFullScreen()));
+ if (m_hGroup) {
+ m_hGroup->addTo(m);
+ }
if (fullScreen()) {
- m->insertSeparator();
- m->insertItem(tr("Previous image"),this,SIGNAL(dispPrev()));
- m->insertItem(tr("Next image"),this,SIGNAL(dispNext()));
- m->insertSeparator();
- m->insertItem(tr("Toggle autoscale"),this, SIGNAL(toggleAutoscale()));
- m->insertItem(tr("Toggle autorotate"),this, SIGNAL(toggleAutorotate()));
- m->insertItem(tr("Toggle thumbnail"),this, SIGNAL(toggleZoomer()));
+ if (m_gPrevNext) {
+ m->insertSeparator();
+ m_gPrevNext->addTo(m);
+ }
+ if (m_gDisplayType) {
+ m->insertSeparator();
+ m_gDisplayType->addTo(m);
+ }
}
m->setFocus();
m->exec( QPoint( QCursor::pos().x(), QCursor::pos().y()) );
+ if (m_hGroup) {
+ m_hGroup->removeFrom(m);
+ }
+ if (m_gPrevNext) {
+ m_gPrevNext->removeFrom(m);
+ }
+ if (m_gDisplayType) {
+ m_gDisplayType->removeFrom(m);
+ }
delete m;
}
void ImageView::setFullScreen(bool how)
{
m_isFullScreen = how;
if (how) {
m_ignore_next_in = true;
setFixedSize(qApp->desktop()->size());
showFullScreen();
} else {
setMinimumSize(10,10);
}
}
void ImageView::focusInEvent(QFocusEvent *)
{
// Always do it here, no matter the size.
odebug << "Focus in (view)" << oendl;
//if (fullScreen()) parentWidget()->showNormal();
if (m_ignore_next_in){m_ignore_next_in=false;return;}
if (fullScreen()) enableFullscreen();
}