summaryrefslogtreecommitdiff
authorleseb <leseb>2002-03-29 22:02:09 (UTC)
committer leseb <leseb>2002-03-29 22:02:09 (UTC)
commitbe017d10da4ccd54b2b3ce030d2ccdc3d0825d62 (patch) (side-by-side diff)
treed41ddf0ce779d358a9a9bd78c4c32c8de36fce50
parent1c3f2b3a329eac52d2a735d818cd70101376999f (diff)
downloadopie-be017d10da4ccd54b2b3ce030d2ccdc3d0825d62.zip
opie-be017d10da4ccd54b2b3ce030d2ccdc3d0825d62.tar.gz
opie-be017d10da4ccd54b2b3ce030d2ccdc3d0825d62.tar.bz2
Add image preview in import dialog
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/graphics/drawpad/drawpad.h2
-rw-r--r--noncore/graphics/drawpad/importdialog.cpp70
-rw-r--r--noncore/graphics/drawpad/importdialog.h9
3 files changed, 80 insertions, 1 deletions
diff --git a/noncore/graphics/drawpad/drawpad.h b/noncore/graphics/drawpad/drawpad.h
index fbe67b8..62a73c9 100644
--- a/noncore/graphics/drawpad/drawpad.h
+++ b/noncore/graphics/drawpad/drawpad.h
@@ -1,86 +1,86 @@
/***************************************************************************
* *
* DrawPad - a drawing program for Opie Environment *
* *
* (C) 2002 by S. Prud'homme <prudhomme@laposte.net> *
* *
* 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; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef DRAWPAD_H
#define DRAWPAD_H
#include <qmainwindow.h>
#include <qpen.h>
-class Tool;
class DrawPadCanvas;
+class Tool;
class QAction;
class QColor;
class QToolButton;
class QWidgetStack;
class DrawPad : public QMainWindow
{
Q_OBJECT
public:
DrawPad(QWidget* parent = 0, const char* name = 0);
~DrawPad();
Tool* tool() { return m_pTool; }
QPen pen() { return m_pen; }
QBrush brush() { return m_brush; }
private slots:
void setPointTool();
void setLineTool();
void setRectangleTool();
void setFilledRectangleTool();
void setEllipseTool();
void setFilledEllipseTool();
void setFillTool();
void setEraseTool();
void changePenWidth(int value);
void changePenColor(const QColor& color);
void changeBrushColor(const QColor& color);
void choosePenColor();
void chooseBrushColor();
void updateUndoRedoToolButtons();
void updateNavigationToolButtons();
void updateCaption();
void importPage();
void exportPage();
private:
DrawPadCanvas* m_pDrawPadCanvas;
Tool* m_pTool;
QPen m_pen;
QBrush m_brush;
QAction* m_pUndoAction;
QAction* m_pRedoAction;
QAction* m_pFirstPageAction;
QAction* m_pPreviousPageAction;
QAction* m_pNextPageAction;
QAction* m_pLastPageAction;
QAction* m_pPointToolAction;
QAction* m_pLineToolAction;
QAction* m_pRectangleToolAction;
QAction* m_pFilledRectangleToolAction;
QAction* m_pEllipseToolAction;
QAction* m_pFilledEllipseToolAction;
QAction* m_pFillToolAction;
QAction* m_pEraseToolAction;
diff --git a/noncore/graphics/drawpad/importdialog.cpp b/noncore/graphics/drawpad/importdialog.cpp
index 7722417..dc78bf3 100644
--- a/noncore/graphics/drawpad/importdialog.cpp
+++ b/noncore/graphics/drawpad/importdialog.cpp
@@ -1,41 +1,111 @@
/***************************************************************************
* *
* DrawPad - a drawing program for Opie Environment *
* *
* (C) 2002 by S. Prud'homme <prudhomme@laposte.net> *
* *
* 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; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#include "importdialog.h"
#include <qpe/applnk.h>
#include <qpe/fileselector.h>
+#include <qcheckbox.h>
+#include <qimage.h>
+#include <qlabel.h>
#include <qlayout.h>
+#include <qpushbutton.h>
ImportDialog::ImportDialog(QWidget* parent, const char* name)
: QDialog(parent, name, true)
{
setCaption(tr("Import"));
m_pFileSelector = new FileSelector("image/*", this, "fileselector");
+ connect(m_pFileSelector, SIGNAL(fileSelected(const DocLnk&)), this, SLOT(fileChanged()));
m_pFileSelector->setNewVisible(false);
m_pFileSelector->setCloseVisible(false);
+ m_pPreviewLabel = new QLabel(this);
+ m_pPreviewLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken);
+ m_pPreviewLabel->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
+ m_pPreviewLabel->setFixedSize(114, 114);
+ m_pPreviewLabel->setBackgroundMode(QWidget:: PaletteMid);
+
+ m_pAutomaticPreviewCheckBox = new QCheckBox(tr("Automatic preview"), this);
+ m_pAutomaticPreviewCheckBox->setChecked(true);
+
+ QPushButton* previewPushButton = new QPushButton(tr("Preview"), this);
+ connect(previewPushButton, SIGNAL(clicked()), this, SLOT(preview()));
+
QVBoxLayout* mainLayout = new QVBoxLayout(this, 4, 4);
+ QHBoxLayout* previewLayout = new QHBoxLayout(4);
+ QVBoxLayout* previewSecondLayout = new QVBoxLayout(4);
+
+ previewSecondLayout->addWidget(m_pAutomaticPreviewCheckBox);
+ previewSecondLayout->addWidget(previewPushButton);
+ previewSecondLayout->addStretch();
+
+ previewLayout->addWidget(m_pPreviewLabel);
+ previewLayout->addLayout(previewSecondLayout);
+
mainLayout->addWidget(m_pFileSelector);
+ mainLayout->addLayout(previewLayout);
+
+ preview();
}
ImportDialog::~ImportDialog()
{
}
const DocLnk* ImportDialog::selected()
{
return m_pFileSelector->selected();
}
+
+void ImportDialog::fileChanged()
+{
+ if (m_pAutomaticPreviewCheckBox->isChecked()) {
+ preview();
+ }
+}
+
+void ImportDialog::preview()
+{
+ const DocLnk* docLnk = m_pFileSelector->selected();
+
+ if (docLnk) {
+ QImage image(docLnk->file());
+
+ int previewWidth = m_pPreviewLabel->contentsRect().width();
+ int previewHeight = m_pPreviewLabel->contentsRect().height();
+
+ float widthScale = 1.0;
+ float heightScale = 1.0;
+
+ if (previewWidth < image.width()) {
+ widthScale = (float)previewWidth / float(image.width());
+ }
+
+ if (previewHeight < image.height()) {
+ heightScale = (float)previewHeight / float(image.height());
+ }
+
+ float scale = (widthScale < heightScale ? widthScale : heightScale);
+ QImage previewImage = image.smoothScale((int)(image.width() * scale) , (int)(image.height() * scale));
+
+ QPixmap previewPixmap;
+ previewPixmap.convertFromImage(previewImage);
+
+ m_pPreviewLabel->setPixmap(previewPixmap);
+
+ delete docLnk;
+ }
+}
diff --git a/noncore/graphics/drawpad/importdialog.h b/noncore/graphics/drawpad/importdialog.h
index 1c67145..ef51d7c 100644
--- a/noncore/graphics/drawpad/importdialog.h
+++ b/noncore/graphics/drawpad/importdialog.h
@@ -1,36 +1,45 @@
/***************************************************************************
* *
* DrawPad - a drawing program for Opie Environment *
* *
* (C) 2002 by S. Prud'homme <prudhomme@laposte.net> *
* *
* 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; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef IMPORTDIALOG_H
#define IMPORTDIALOG_H
#include <qdialog.h>
class DocLnk;
class FileSelector;
+class QCheckBox;
+class QLabel;
+
class ImportDialog : public QDialog
{
Q_OBJECT
public:
ImportDialog(QWidget* parent = 0, const char* name = 0);
~ImportDialog();
const DocLnk* selected();
+private slots:
+ void fileChanged();
+ void preview();
+
private:
FileSelector* m_pFileSelector;
+ QLabel* m_pPreviewLabel;
+ QCheckBox* m_pAutomaticPreviewCheckBox;
};
#endif // IMPORTDIALOG_H