summaryrefslogtreecommitdiff
path: root/noncore
authorleseb <leseb>2002-06-08 12:48:01 (UTC)
committer leseb <leseb>2002-06-08 12:48:01 (UTC)
commit571908b989a85d256767dc5b27bccdb717554bb5 (patch) (side-by-side diff)
tree09149eb5ed82683020ebd9372635d4d0233982a3 /noncore
parent9dcd598f9b815511cae884d26b18e3c8913b9fcf (diff)
downloadopie-571908b989a85d256767dc5b27bccdb717554bb5.zip
opie-571908b989a85d256767dc5b27bccdb717554bb5.tar.gz
opie-571908b989a85d256767dc5b27bccdb717554bb5.tar.bz2
Selection and delete now work in thumbnail view
Diffstat (limited to 'noncore') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/graphics/drawpad/drawpadcanvas.cpp13
-rw-r--r--noncore/graphics/drawpad/drawpadcanvas.h1
-rw-r--r--noncore/graphics/drawpad/thumbnailview.cpp27
-rw-r--r--noncore/graphics/drawpad/thumbnailview.h2
4 files changed, 42 insertions, 1 deletions
diff --git a/noncore/graphics/drawpad/drawpadcanvas.cpp b/noncore/graphics/drawpad/drawpadcanvas.cpp
index 252f4d5..0a1e9a5 100644
--- a/noncore/graphics/drawpad/drawpadcanvas.cpp
+++ b/noncore/graphics/drawpad/drawpadcanvas.cpp
@@ -282,96 +282,109 @@ void DrawPadCanvas::exportPage(uint fromPage, uint toPage, const QString& name,c
FileManager fileManager;
QIODevice* ioDevice = fileManager.saveFile(docLnk);
QImageIO imageIO(ioDevice, format);
QImage image = m_pages.current()->convertToImage();
imageIO.setImage(image);
imageIO.write();
delete ioDevice;
} else {
for (uint i = fromPage; i <= toPage; i++) {
DocLnk docLnk;
MimeType mimeType(format);
docLnk.setName(name + QString::number(i));
docLnk.setType(mimeType.id());
FileManager fileManager;
QIODevice* ioDevice = fileManager.saveFile(docLnk);
QImageIO imageIO(ioDevice, format);
QImage image = m_pages.at(i - 1)->convertToImage();
imageIO.setImage(image);
imageIO.write();
delete ioDevice;
}
}
}
Page* DrawPadCanvas::currentPage()
{
return m_pages.current();
}
QList<Page> DrawPadCanvas::pages()
{
return m_pages;
}
uint DrawPadCanvas::pagePosition()
{
return (m_pages.at() + 1);
}
uint DrawPadCanvas::pageCount()
{
return m_pages.count();
}
+void DrawPadCanvas::selectPage(Page* page)
+{
+ m_pages.findRef(page);
+ m_pageBackups.clear();
+ m_pageBackups.append(new Page(*(m_pages.current())));
+
+ resizeContents(m_pages.current()->width(), m_pages.current()->height());
+ viewport()->update();
+
+ emit pagesChanged();
+ emit pageBackupsChanged();
+}
+
void DrawPadCanvas::backupPage()
{
QPixmap* currentBackup = m_pageBackups.current();
while (m_pageBackups.last() != currentBackup) {
m_pageBackups.removeLast();
}
while (m_pageBackups.count() >= (5 + 1)) {
m_pageBackups.removeFirst();
}
m_pageBackups.append(new Page(*(m_pages.current())));
emit pageBackupsChanged();
}
void DrawPadCanvas::deleteAll()
{
m_pages.clear();
m_pages.append(new Page(contentsRect().size()));
m_pages.current()->fill(Qt::white);
m_pageBackups.clear();
m_pageBackups.append(new Page(*(m_pages.current())));
resizeContents(m_pages.current()->width(), m_pages.current()->height());
viewport()->update();
emit pagesChanged();
emit pageBackupsChanged();
}
void DrawPadCanvas::newPage()
{
QRect rect = contentsRect();
NewPageDialog newPageDialog(rect.width(), rect.height(), m_pDrawPad->pen().color(),
m_pDrawPad->brush().color(), this);
if (newPageDialog.exec() == QDialog::Accepted) {
m_pages.insert(m_pages.at() + 1, new Page(newPageDialog.selectedWidth(),
newPageDialog.selectedHeight()));
m_pages.current()->fill(newPageDialog.selectedColor());
m_pageBackups.clear();
m_pageBackups.append(new Page(*(m_pages.current())));
diff --git a/noncore/graphics/drawpad/drawpadcanvas.h b/noncore/graphics/drawpad/drawpadcanvas.h
index 47763f9..cf2d904 100644
--- a/noncore/graphics/drawpad/drawpadcanvas.h
+++ b/noncore/graphics/drawpad/drawpadcanvas.h
@@ -2,81 +2,82 @@
* *
* 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 DRAWPADCANVAS_H
#define DRAWPADCANVAS_H
#include <qscrollview.h>
#include <qlist.h>
#include <qpointarray.h>
class DrawPad;
class Page;
class DrawPadCanvas : public QScrollView
{
Q_OBJECT
public:
DrawPadCanvas(DrawPad* drawPad, QWidget* parent = 0, const char* name = 0);
~DrawPadCanvas();
void load(QIODevice* ioDevice);
void initialPage();
void save(QIODevice* ioDevice);
void importPage(const QString& fileName);
void exportPage(uint fromPage, uint toPage, const QString& name, const QString& format);
bool undoEnabled();
bool redoEnabled();
bool goPreviousPageEnabled();
bool goNextPageEnabled();
Page* currentPage();
QList<Page> pages();
uint pagePosition();
uint pageCount();
+ void selectPage(Page* page);
void backupPage();
public slots:
void deleteAll();
void newPage();
void clearPage();
void deletePage();
void undo();
void redo();
void goFirstPage();
void goPreviousPage();
void goNextPage();
void goLastPage();
signals:
void pagesChanged();
void pageBackupsChanged();
protected:
void contentsMousePressEvent(QMouseEvent* e);
void contentsMouseReleaseEvent(QMouseEvent* e);
void contentsMouseMoveEvent(QMouseEvent* e);
void drawContents(QPainter* p, int cx, int cy, int cw, int ch);
private:
DrawPad* m_pDrawPad;
QList<Page> m_pages;
QList<Page> m_pageBackups;
};
#endif // DRAWPADCANVAS_H
diff --git a/noncore/graphics/drawpad/thumbnailview.cpp b/noncore/graphics/drawpad/thumbnailview.cpp
index 1754ce9..476b7b9 100644
--- a/noncore/graphics/drawpad/thumbnailview.cpp
+++ b/noncore/graphics/drawpad/thumbnailview.cpp
@@ -55,157 +55,182 @@ PageListViewItem::PageListViewItem(Page* page, QListView* parent)
QPixmap pixmap(64, 64);
pixmap.fill(listView()->colorGroup().mid());
bitBlt(&pixmap, (pixmap.width() - previewPixmap.width()) / 2,
(pixmap.height() - previewPixmap.height()) / 2, &previewPixmap);
setPixmap(0, pixmap);
}
PageListViewItem::~PageListViewItem()
{
}
Page* PageListViewItem::page() const
{
return m_pPage;
}
PageListView::PageListView(DrawPadCanvas* drawPadCanvas, QWidget* parent, const char* name)
: QListView(parent, name)
{
m_pDrawPadCanvas = drawPadCanvas;
header()->hide();
setVScrollBarMode(QScrollView::AlwaysOn);
setAllColumnsShowFocus(true);
addColumn(tr("Thumbnail"));
addColumn(tr("Information"));
updateView();
}
PageListView::~PageListView()
{
}
void PageListView::updateView()
{
clear();
if (m_pDrawPadCanvas) {
QList<Page> pageList = m_pDrawPadCanvas->pages();
QListIterator<Page> it(pageList);
for (; it.current(); ++it) {
new PageListViewItem(it.current(), this);
}
+
+ setSorting(0, false);
+ select(m_pDrawPadCanvas->currentPage());
}
}
void PageListView::resizeEvent(QResizeEvent* e)
{
Q_UNUSED(e);
setColumnWidth(1, contentsRect().width() - columnWidth(0) - verticalScrollBar()->width());
}
+void PageListView::select(Page* page)
+{
+ PageListViewItem* item = (PageListViewItem*)firstChild();
+
+ while (item) {
+ if (item->page() == page) {
+ setSelected(item, true);
+ ensureItemVisible(item);
+ break;
+ }
+
+ item = (PageListViewItem*)(item->nextSibling());
+ }
+}
+
Page* PageListView::selected() const
{
Page* page;
PageListViewItem* item = (PageListViewItem*)selectedItem();
if (item) {
page = item->page();
} else {
page = NULL;
}
return page;
}
-
ThumbnailView::ThumbnailView(DrawPadCanvas* drawPadCanvas, QWidget* parent, const char* name)
: QWidget(parent, name, Qt::WType_Modal | Qt::WType_TopLevel)
{
inLoop = false;
m_pDrawPadCanvas = drawPadCanvas;
setCaption(tr("Thumbnail"));
QToolButton* newPageButton = new QToolButton(this);
newPageButton->setIconSet(Resource::loadIconSet("new"));
newPageButton->setAutoRaise(true);
QToolButton* clearPageButton = new QToolButton(this);
clearPageButton->setIconSet(Resource::loadIconSet("drawpad/clear"));
clearPageButton->setAutoRaise(true);
QToolButton* deletePageButton = new QToolButton(this);
deletePageButton->setIconSet(Resource::loadIconSet("trash"));
deletePageButton->setAutoRaise(true);
+ connect(deletePageButton, SIGNAL(clicked()), this, SLOT(deletePage()));
QToolButton* movePageUpButton = new QToolButton(this);
movePageUpButton->setIconSet(Resource::loadIconSet("up"));
movePageUpButton->setAutoRaise(true);
QToolButton* movePageDownButton = new QToolButton(this);
movePageDownButton->setIconSet(Resource::loadIconSet("down"));
movePageDownButton->setAutoRaise(true);
m_pPageListView = new PageListView(m_pDrawPadCanvas, this);
+ connect(m_pPageListView, SIGNAL(selectionChanged()), this, SLOT(changePage()));
QVBoxLayout* mainLayout = new QVBoxLayout(this, 4, 4);
QHBoxLayout* buttonLayout = new QHBoxLayout(0);
buttonLayout->addWidget(newPageButton);
buttonLayout->addWidget(clearPageButton);
buttonLayout->addWidget(deletePageButton);
buttonLayout->addStretch();
buttonLayout->addWidget(movePageUpButton);
buttonLayout->addWidget(movePageDownButton);
mainLayout->addLayout(buttonLayout);
mainLayout->addWidget(m_pPageListView);
}
ThumbnailView::~ThumbnailView()
{
hide();
}
void ThumbnailView::hide()
{
QWidget::hide();
if (inLoop) {
inLoop = false;
qApp->exit_loop();
}
}
void ThumbnailView::exec()
{
show();
if (!inLoop) {
inLoop = true;
qApp->enter_loop();
}
}
void ThumbnailView::deletePage()
{
QMessageBox messageBox(tr("Delete Page"), tr("Do you want to delete\nthe selected page?"),
QMessageBox::Information, QMessageBox::Yes,
QMessageBox::No | QMessageBox::Escape | QMessageBox::Default,
QMessageBox::NoButton, this);
messageBox.setButtonText(QMessageBox::Yes, tr("Yes"));
messageBox.setButtonText(QMessageBox::No, tr("No"));
if (messageBox.exec() == QMessageBox::Yes) {
m_pDrawPadCanvas->deletePage();
+ m_pPageListView->updateView();
}
}
+
+void ThumbnailView::changePage()
+{
+ m_pDrawPadCanvas->selectPage(m_pPageListView->selected());
+}
diff --git a/noncore/graphics/drawpad/thumbnailview.h b/noncore/graphics/drawpad/thumbnailview.h
index ae97ff1..9417655 100644
--- a/noncore/graphics/drawpad/thumbnailview.h
+++ b/noncore/graphics/drawpad/thumbnailview.h
@@ -1,73 +1,75 @@
/***************************************************************************
* *
* 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 THUMBNAILVIEW_H
#define THUMBNAILVIEW_H
#include <qwidget.h>
#include <qlistview.h>
class DrawPadCanvas;
class Page;
class PageListViewItem : public QListViewItem
{
public:
PageListViewItem(Page* page, QListView* parent);
~PageListViewItem();
Page* page() const;
private:
Page* m_pPage;
};
class PageListView : public QListView
{
public:
PageListView(DrawPadCanvas* drawPadCanvas, QWidget* parent = 0, const char* name = 0);
~PageListView();
void updateView();
+ void select(Page* page);
Page* selected() const;
protected:
void resizeEvent(QResizeEvent* e);
private:
DrawPadCanvas* m_pDrawPadCanvas;
};
class ThumbnailView : public QWidget
{
Q_OBJECT
public:
ThumbnailView(DrawPadCanvas* drawPadCanvas, QWidget* parent = 0, const char* name = 0);
~ThumbnailView();
void hide();
void exec();
public slots:
void deletePage();
+ void changePage();
private:
bool inLoop;
DrawPadCanvas* m_pDrawPadCanvas;
PageListView* m_pPageListView;
};
#endif // THUMBNAILVIEW_H