summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/graphics/opie-eye/gui/imageview.cpp46
-rw-r--r--noncore/graphics/opie-eye/gui/imageview.h8
-rw-r--r--noncore/graphics/opie-eye/gui/mainwindow.cpp63
-rw-r--r--noncore/graphics/opie-eye/gui/mainwindow.h5
4 files changed, 105 insertions, 17 deletions
diff --git a/noncore/graphics/opie-eye/gui/imageview.cpp b/noncore/graphics/opie-eye/gui/imageview.cpp
index 88a8bc6..5b34ca2 100644
--- a/noncore/graphics/opie-eye/gui/imageview.cpp
+++ b/noncore/graphics/opie-eye/gui/imageview.cpp
@@ -4,8 +4,10 @@
#include <opie2/oconfig.h>
#include <opie2/okeyconfigwidget.h>
#include <qpe/resource.h>
+#include <qpe/qpeapplication.h>
+#include <qpopupmenu.h>
using namespace Opie::Core;
ImageView::ImageView(Opie::Core::OConfig *cfg, QWidget* parent, const char* name, WFlags fl )
@@ -13,13 +15,15 @@ ImageView::ImageView(Opie::Core::OConfig *cfg, QWidget* parent, const char* name
{
m_viewManager = 0;
m_cfg = cfg;
m_isFullScreen = false;
+ QPEApplication::setStylusOperation(viewport(),QPEApplication::RightOnHold);
initKeys();
}
ImageView::~ImageView()
{
+ odebug << "Delete Imageview" << oendl;
if (m_viewManager) {
delete m_viewManager;
}
}
@@ -47,16 +51,26 @@ void ImageView::initKeys()
lst.append( Opie::Core::OKeyPair(Qt::Key_Escape,0));
m_viewManager = new Opie::Core::OKeyConfigManager(m_cfg, "image_view_keys",
lst, false,this, "image_view_keys" );
+
m_viewManager->addKeyConfig( Opie::Core::OKeyConfigItem(tr("View Image Info"), "imageviewinfo",
Resource::loadPixmap("1to1"), ViewInfo,
Opie::Core::OKeyPair(Qt::Key_I,0),
this, SLOT(slotShowImageInfo())));
+ m_viewManager->addKeyConfig( Opie::Core::OKeyConfigItem(tr("Toggle autorotate"), "imageautorotate",
+ Resource::loadPixmap("rotate"), Autorotate,
+ Opie::Core::OKeyPair(Qt::Key_R,0),
+ this, SIGNAL(toggleAutorotate())));
+ m_viewManager->addKeyConfig( Opie::Core::OKeyConfigItem(tr("Toggle autoscale"), "imageautoscale",
+ Resource::loadPixmap("1to1"), Autoscale,
+ Opie::Core::OKeyPair(Qt::Key_S,0),
+ this, SIGNAL(toggleAutoscale())));
+
m_viewManager->addKeyConfig( Opie::Core::OKeyConfigItem(tr("Switch to next image"), "imageshownext",
Resource::loadPixmap("forward"), ShowNext,
- Opie::Core::OKeyPair(Qt::Key_N,0),
+ Opie::Core::OKeyPair(Qt::Key_Return,0),
this, SIGNAL(dispNext())));
m_viewManager->addKeyConfig( Opie::Core::OKeyConfigItem(tr("Switch to previous image"), "imageshowprev",
Resource::loadPixmap("back"), ShowPrevious,
Opie::Core::OKeyPair(Qt::Key_P,0),
@@ -84,4 +98,34 @@ void ImageView::keyReleaseEvent(QKeyEvent * e)
void ImageView::slotShowImageInfo()
{
emit dispImageInfo(m_lastName);
}
+
+void ImageView::contentsMousePressEvent ( QMouseEvent * e)
+{
+ if (e->button()==1) {
+ return OImageScrollView::contentsMousePressEvent(e);
+ }
+ if (!fullScreen()) return;
+#if 0
+ // doesn't work right (repainting problems)
+ odebug << "Popup " << oendl;
+ QPopupMenu *m = new QPopupMenu(0);
+ if (!m) return;
+ m->insertItem(tr("Previous image"),ShowPrevious);
+ m->insertItem(tr("Next image"),ShowNext);
+ m->insertSeparator();
+ m->insertItem(tr("Toggle fullscreen"),FullScreen);
+ m->insertItem(tr("Toggle autoscale"),Autoscale);
+ m->insertItem(tr("Toggle autorotate"),Autorotate);
+ m->insertItem(tr("Toggle thumbnail"),Zoomer);
+ m->setFocus();
+ m->exec( QPoint( QCursor::pos().x(), QCursor::pos().y()) );
+ delete m;
+ parentWidget()->showFullScreen();
+#endif
+}
+
+void ImageView::setFullScreen(bool how)
+{
+ m_isFullScreen = how;
+}
diff --git a/noncore/graphics/opie-eye/gui/imageview.h b/noncore/graphics/opie-eye/gui/imageview.h
index 6bf930f..445bee9 100644
--- a/noncore/graphics/opie-eye/gui/imageview.h
+++ b/noncore/graphics/opie-eye/gui/imageview.h
@@ -19,15 +19,17 @@ class ImageView:public Opie::MM::OImageScrollView
FullScreen,
ShowNext,
ShowPrevious,
Zoomer,
+ Autorotate,
+ Autoscale
};
public:
ImageView(Opie::Core::OConfig *cfg, QWidget* parent, const char* name = 0, WFlags fl = 0 );
virtual ~ImageView();
Opie::Core::OKeyConfigManager* manager();
- void setFullScreen(bool how){m_isFullScreen = how;}
+ void setFullScreen(bool how);
bool fullScreen(){return m_isFullScreen;}
signals:
void dispImageInfo(const QString&);
@@ -35,8 +37,10 @@ signals:
void dispPrev();
void toggleFullScreen();
void hideMe();
void toggleZoomer();
+ void toggleAutoscale();
+ void toggleAutorotate();
protected:
Opie::Core::OConfig * m_cfg;
Opie::Core::OKeyConfigManager*m_viewManager;
@@ -45,6 +49,8 @@ protected:
protected slots:
virtual void slotShowImageInfo();
virtual void keyReleaseEvent(QKeyEvent * e);
+ virtual void contentsMousePressEvent ( QMouseEvent * e);
};
+
#endif
diff --git a/noncore/graphics/opie-eye/gui/mainwindow.cpp b/noncore/graphics/opie-eye/gui/mainwindow.cpp
index 0484f73..a784f5b 100644
--- a/noncore/graphics/opie-eye/gui/mainwindow.cpp
+++ b/noncore/graphics/opie-eye/gui/mainwindow.cpp
@@ -29,9 +29,9 @@
#include <qlayout.h>
#include <qdialog.h>
#include <qmap.h>
#include <qtimer.h>
-
+#include <qframe.h>
OPIE_EXPORT_APP_V2( Opie::Core::OApplicationFactory<PMainWindow>,"Opie Eye" )
@@ -41,8 +41,9 @@ PMainWindow::PMainWindow(QWidget* wid, const char* name, WFlags style)
{
setCaption( QObject::tr("Opie Eye Caramba" ) );
m_cfg = new Opie::Core::OConfig("phunkview");
m_cfg->setGroup("Zecke_view" );
+ tFrame = 0;
// qDebug( "Process-wide OApplication object @ %0x", oApp );
/*
* Initialize ToolBar and IconView
* And Connect Them
@@ -127,13 +128,13 @@ PMainWindow::PMainWindow(QWidget* wid, const char* name, WFlags style)
}
connect(rotateButton,SIGNAL(toggled(bool)),this,SLOT(slotRotateToggled(bool)));
- btn = new QToolButton(bar);
- btn->setIconSet( Resource::loadIconSet( "1to1" ) );
- btn->setToggleButton(true);
- btn->setOn(false);
- connect(btn,SIGNAL(toggled(bool)),this,SLOT(slotScaleToggled(bool)));
+ scaleButton = new QToolButton(bar);
+ scaleButton->setIconSet( Resource::loadIconSet( "1to1" ) );
+ scaleButton->setToggleButton(true);
+ scaleButton->setOn(false);
+ connect(scaleButton,SIGNAL(toggled(bool)),this,SLOT(slotScaleToggled(bool)));
autoScale = true;
zoomButton = new QToolButton(bar);
zoomButton->setIconSet( Resource::loadIconSet( "mag" ) );
@@ -144,8 +145,10 @@ PMainWindow::PMainWindow(QWidget* wid, const char* name, WFlags style)
}
PMainWindow::~PMainWindow() {
odebug << "Shutting down" << oendl;
+ if (tFrame) delete tFrame;
+ odebug << "Shutting down done" << oendl;
}
void PMainWindow::slotToggleZoomer()
{
@@ -161,8 +164,23 @@ void PMainWindow::slotZoomerToggled(bool how)
m_disp->setShowZoomer(zoomerOn);
}
}
+void PMainWindow::slotToggleAutorotate()
+{
+ if (!m_disp) return;
+ if (!rotateButton->isEnabled()) return;
+ bool cur = rotateButton->isOn();
+ rotateButton->setOn(!cur);
+}
+
+void PMainWindow::slotToggleAutoscale()
+{
+ if (!m_disp) return;
+ bool cur = scaleButton->isOn();
+ scaleButton->setOn(!cur);
+}
+
void PMainWindow::slotRotateToggled(bool how)
{
autoRotate = how;
if (m_disp) {
@@ -294,8 +312,10 @@ void PMainWindow::initDisp() {
connect(m_disp,SIGNAL(dispPrev()),m_view,SLOT(slotShowPrev()));
connect(m_disp,SIGNAL(toggleFullScreen()),this,SLOT(slotToggleFullScreen()));
connect(m_disp,SIGNAL(hideMe()),this,SLOT(raiseIconView()));
connect(m_disp,SIGNAL(toggleZoomer()),this,SLOT(slotToggleZoomer()));
+ connect(m_disp,SIGNAL(toggleAutoscale()),this,SLOT(slotToggleAutoscale()));
+ connect(m_disp,SIGNAL(toggleAutorotate()),this,SLOT(slotToggleAutorotate()));
}
}
void PMainWindow::slotToggleFullScreen()
@@ -307,15 +327,24 @@ void PMainWindow::slotToggleFullScreen()
odebug << "Current = " << current << oendl;
if (current) {
odebug << "full" << oendl;
m_disp->setBackgroundColor(black);
- m_disp->reparent(0,QPoint(0,0));
+ if (!tFrame) {
+ tFrame = new QWidget(0,0,WType_TopLevel|WStyle_NoBorder|WStyle_StaysOnTop);
+ tFrame->resize(qApp->desktop()->width(), qApp->desktop()->height());
+ tFrame->setMinimumSize(qApp->desktop()->width(), qApp->desktop()->height());
+ }
+ m_disp->reparent(tFrame,QPoint(0,0));
m_disp->setVScrollBarMode(QScrollView::AlwaysOff);
m_disp->setHScrollBarMode(QScrollView::AlwaysOff);
m_disp->resize(qApp->desktop()->width(), qApp->desktop()->height());
- m_disp->showFullScreen();
+ tFrame->showFullScreen();
} else {
odebug << "window" << oendl;
+ m_disp->reparent(0,QPoint(0,0));
+ m_disp->showNormal();
+ /* don't forget it! */
+ tFrame->hide();
m_disp->setBackgroundColor(white);
m_stack->addWidget(m_disp,ImageDisplay);
m_disp->setVScrollBarMode(QScrollView::Auto);
m_disp->setHScrollBarMode(QScrollView::Auto);
@@ -334,8 +363,11 @@ void PMainWindow::slotToggleFullScreen()
*
* ### FIXME and talk to alwin
*/
void PMainWindow::slotShowInfo( const QString& inf ) {
+ if (m_disp && m_disp->fullScreen() && m_disp->isVisible()) {
+ return;
+ }
if ( !m_info ) {
initInfo();
}
m_info->setPath( inf );
@@ -345,11 +377,8 @@ void PMainWindow::slotShowInfo( const QString& inf ) {
upButton->hide();
fsButton->hide();
viewModeButton->hide();
}
- if (m_disp && m_disp->fullScreen() && m_disp->isVisible()) {
- m_disp->hide();
- }
m_stack->raiseWidget( ImageInfo );
}
void PMainWindow::slotDisplay( const QString& inf ) {
@@ -364,9 +393,10 @@ void PMainWindow::slotDisplay( const QString& inf ) {
fsButton->hide();
viewModeButton->hide();
}
if (m_disp->fullScreen()) {
- m_disp->show();
+ tFrame->setActiveWindow();
+ tFrame->showFullScreen();
} else {
m_stack->raiseWidget( ImageDisplay );
}
}
@@ -382,12 +412,17 @@ void PMainWindow::closeEvent( QCloseEvent* ev ) {
* or properly quit
*/
if ( m_stack->visibleWidget() == m_info ||
m_stack->visibleWidget() == m_disp ) {
- raiseIconView();
ev->ignore();
+ raiseIconView();
return;
}
+ if (m_disp && m_disp->fullScreen()) {
+ /* otherwise opie-eye crashes in bigscreen mode! */
+ m_disp->reparent(0,QPoint(0,0));
+ m_stack->addWidget(m_disp,ImageDisplay);
+ }
ev->accept();
QTimer::singleShot(0, qApp, SLOT(closeAllWindows()));
}
@@ -399,9 +434,9 @@ void PMainWindow::raiseIconView() {
fsButton->show();
viewModeButton->show();
}
if (m_disp && m_disp->fullScreen() && m_disp->isVisible()) {
- m_disp->hide();
+ tFrame->hide();
}
m_stack->raiseWidget( IconView );
}
diff --git a/noncore/graphics/opie-eye/gui/mainwindow.h b/noncore/graphics/opie-eye/gui/mainwindow.h
index e51a3ff..1f90f9f 100644
--- a/noncore/graphics/opie-eye/gui/mainwindow.h
+++ b/noncore/graphics/opie-eye/gui/mainwindow.h
@@ -43,8 +43,10 @@ public slots:
void slotRotateToggled(bool);
void slotScaleToggled(bool);
void slotZoomerToggled(bool);
void slotToggleZoomer();
+ void slotToggleAutorotate();
+ void slotToggleAutoscale();
void setDocument( const QString& );
virtual void slotToggleFullScreen();
protected slots:
@@ -64,10 +66,11 @@ private:
ImageView *m_disp;
bool autoRotate;
bool autoScale;
bool zoomerOn;
+ QWidget*tFrame;
QToolButton*rotateButton,*upButton,*fsButton,*viewModeButton;
- QToolButton*nextButton,*prevButton,*zoomButton;
+ QToolButton*nextButton,*prevButton,*zoomButton,*scaleButton;
private slots:
void slotConfig();
};