-rw-r--r-- | noncore/graphics/drawpad/drawpadcanvas.cpp | 13 | ||||
-rw-r--r-- | noncore/graphics/drawpad/drawpadcanvas.h | 1 | ||||
-rw-r--r-- | noncore/graphics/drawpad/thumbnailview.cpp | 27 | ||||
-rw-r--r-- | noncore/graphics/drawpad/thumbnailview.h | 2 |
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 @@ -322,16 +322,29 @@ 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)) { 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 @@ -42,16 +42,17 @@ public: 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(); 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 @@ -95,42 +95,59 @@ void PageListView::updateView() 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")); @@ -140,26 +157,28 @@ ThumbnailView::ThumbnailView(DrawPadCanvas* drawPadCanvas, QWidget* parent, cons 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(); @@ -202,10 +221,16 @@ void ThumbnailView::deletePage() 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 @@ -35,16 +35,17 @@ private: 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; }; @@ -57,16 +58,17 @@ 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; }; |