diff options
author | Timothy Pearson <[email protected]> | 2013-02-01 17:25:43 -0600 |
---|---|---|
committer | Timothy Pearson <[email protected]> | 2013-02-01 17:25:43 -0600 |
commit | 32ace734b36de108d8322157aaa106069df16477 (patch) | |
tree | aeb5c8b994c2ae6bb32d7d21b13e18e7b743fddc /kviewshell/marklist.cpp | |
parent | 65eca7929c22f0f0bc64135c02d85d1243df376c (diff) | |
download | tdegraphics-32ace734b36de108d8322157aaa106069df16477.tar.gz tdegraphics-32ace734b36de108d8322157aaa106069df16477.zip |
Fix FTBFS
Diffstat (limited to 'kviewshell/marklist.cpp')
-rw-r--r-- | kviewshell/marklist.cpp | 616 |
1 files changed, 0 insertions, 616 deletions
diff --git a/kviewshell/marklist.cpp b/kviewshell/marklist.cpp deleted file mode 100644 index 1cbf6581..00000000 --- a/kviewshell/marklist.cpp +++ /dev/null @@ -1,616 +0,0 @@ -/* This file is part of the KDE project - Copyright (C) 2004 Wilfried Huss <[email protected]> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include <config.h> - -#include <tqcheckbox.h> -#include <tqimage.h> -#include <tqlabel.h> -#include <tqlayout.h> -#include <tqtooltip.h> -#include <tqlabel.h> -#include <tqwhatsthis.h> -#include <tqpainter.h> -#include <tqtimer.h> - -#include <kapplication.h> -#include <kglobalsettings.h> -#include <klocale.h> -#include <kpopupmenu.h> -#include <kiconloader.h> -#include <kdebug.h> - -#include "documentPageCache.h" -#include "kvsprefs.h" -#include "marklist.h" - - -#include "marklist.moc" - - -namespace { - -/** Holds the icon used as a overlay on pages which are not drawn yet. */ -TQPixmap* waitIcon = 0; - -} // namespace anon - - -/****** ThumbnailWidget ******/ - -ThumbnailWidget::ThumbnailWidget(MarkListWidget* _parent, const PageNumber& _pageNumber, DocumentPageCache* _pageCache) - : TQWidget(_parent), pageNumber(_pageNumber), pageCache(_pageCache), parent(_parent) -{ - setBackgroundMode(TQt::NoBackground); - - needsUpdating = true; - - if (!waitIcon) - { - waitIcon = new TQPixmap(TDEGlobal::iconLoader()->loadIcon("gear", KIcon::NoGroup, KIcon::SizeMedium)); - } -} - -void ThumbnailWidget::paintEvent(TQPaintEvent* e) -{ - // Only repaint if the widget is really visible. We need to check this because TQt - // sends paintEvents to all widgets that have ever been visible in the Scrollview - // whenever the ScrollView is resized. This also increases the percieved performance - // only thumbnails that are really needed are rendered. - if (!parent->isVisible()) - { - //kdDebug() << "Abort Thumbnail drawing for page " << pageNumber << endl; - return; - } - - TQPainter p(this); - p.setClipRect(e->rect()); - - // Paint a black border around the widget - p.setRasterOp(TQt::CopyROP); - p.setBrush(NoBrush); - p.setPen(TQt::black); - p.drawRect(rect()); - - // Remove 1 pixel from all sides of the rectangle, to eliminate overdraw with - // the black border. - TQRect thumbRect = rect(); - thumbRect.addCoords(1,1,-1,-1); - - // If the thumbnail is empty or has been marked for updating generate a new thumbnail. - if (thumbnail.isNull() || needsUpdating) - { - if (KVSPrefs::changeColors() && KVSPrefs::renderMode() == KVSPrefs::EnumRenderMode::Paper) - p.fillRect(thumbRect, KVSPrefs::paperColor()); - else - p.fillRect(thumbRect, TQt::white); - - // Draw busy indicator. - // Im not really sure if this is a good idea. - // While it is nice to see an indication that something is happening for pages which - // take long to redraw, it gets quite annoing for fast redraws. - // TODO: Disable or find something less distractiong. - p.drawPixmap(10, 10, *waitIcon); - - TQTimer::singleShot(50, this, TQT_SLOT(setThumbnail())); - return; - } - - // Safety check - if (thumbnail.isNull()) - { - kdDebug(1223) << "No Thumbnail for page " << pageNumber << " created." << endl; - return; - } - - - // The actual page starts at point (1,1) because of the outline. - // Therefore we need to shift the destination rectangle. - TQRect pixmapRect = thumbRect; - pixmapRect.moveBy(-1,-1); - - // Paint widget - bitBlt (this, thumbRect.topLeft(), &thumbnail, pixmapRect, CopyROP); -} - -void ThumbnailWidget::resizeEvent(TQResizeEvent*) -{ - thumbnail.resize(width(), height()); - // Generate a new thumbnail in the next paintEvent. - needsUpdating = true; -} - -void ThumbnailWidget::setThumbnail() -{ - if (!parent->isVisible()) - { - // We only want to calculate the thumbnail for widgets that are currently visible. - // When we are fast scrolling thru the document. Many paint events are created, that - // are often not needed anymore at the time the eventloop executes them. - //kdDebug() << "Delayed request Abort Thumbnail drawing for page " << pageNumber << endl; - kapp->processEvents(); - return; - } - - needsUpdating = false; - - // Draw Thumbnail - thumbnail = pageCache->createThumbnail(pageNumber, width() - 2); - - if (thumbnail.height() != height() + 2) - setFixedHeight(thumbnail.height() + 2); - - update(); - kapp->processEvents(); -} - - -/****** MarkListWidget ******/ - - -MarkListWidget::MarkListWidget(TQWidget* _parent, MarkList* _markList, const PageNumber& _pageNumber, - DocumentPageCache* _pageCache, bool _showThumbnail) - : TQWidget(_parent), showThumbnail(_showThumbnail), pageNumber(_pageNumber), - pageCache(_pageCache), markList(_markList) -{ - TQBoxLayout* layout = new TQVBoxLayout(this, margin); - - thumbnailWidget = 0; - if (showThumbnail) - { - thumbnailWidget = new ThumbnailWidget(this, pageNumber, pageCache); - layout->addWidget(thumbnailWidget, 1, TQt::AlignTop); - } - - TQBoxLayout* bottomLayout = new TQHBoxLayout(layout); - - checkBox = new TQCheckBox(TQString(), this ); - checkBox->setFocusPolicy(TQ_NoFocus); - TQToolTip::add(checkBox, i18n("Select for printing")); - bottomLayout->addWidget(checkBox, 0, TQt::AlignAuto); - - pageLabel = new TQLabel(TQString("%1").arg(pageNumber), this); - bottomLayout->addWidget(pageLabel, 1); - - _backgroundColor = TDEGlobalSettings::baseColor(); - - // Alternate between colors. - if ((pageNumber % 2 == 0) && TDEGlobalSettings::alternateBackgroundColor().isValid()) - _backgroundColor = TDEGlobalSettings::alternateBackgroundColor(); - - setPaletteBackgroundColor( _backgroundColor ); - - show(); -} - -bool MarkListWidget::isChecked() const -{ - return checkBox->isChecked(); -} - -void MarkListWidget::toggle() -{ - checkBox->toggle(); -} - -void MarkListWidget::setChecked( bool checked ) -{ - checkBox->setChecked(checked); -} - -void MarkListWidget::setSelected( bool selected ) -{ - if (selected) - setPaletteBackgroundColor( TQApplication::palette().active().highlight() ); - else - setPaletteBackgroundColor( _backgroundColor ); -} - -int MarkListWidget::setNewWidth(int width) -{ - int height = TQMAX(checkBox->height(), pageLabel->height()) + 2*margin; - if (showThumbnail) - { - // Calculate size of Thumbnail - int thumbnailWidth = TQMIN(width, KVSPrefs::maxThumbnailWidth()); - int thumbnailHeight = (int)((thumbnailWidth - 2*margin - 2) / pageCache->sizeOfPage(pageNumber).aspectRatio() + 0.5) + 2; - - // Resize Thumbnail if necessary - if (thumbnailWidget->size() != TQSize(thumbnailWidth, thumbnailHeight)) - thumbnailWidget->setFixedSize(thumbnailWidth - 2*margin, thumbnailHeight); - - height += thumbnailHeight + 2*margin; - } - - setFixedSize(width, height); - return height; -} - -bool MarkListWidget::isVisible() -{ - TQRect visibleRect(markList->contentsX(), markList->contentsY(), - markList->visibleWidth(), markList->visibleHeight()); - TQRect widgetRect(markList->childX(this), markList->childY(this), width(), height()); - - if (widgetRect.intersects(visibleRect)) - return true; - - return false; -} - - -void MarkListWidget::mousePressEvent(TQMouseEvent* e) -{ - // Select Page - if (e->button() == Qt::LeftButton) - { - emit selected(pageNumber); - } - else if (e->button() == Qt::RightButton) - { - emit showPopupMenu(pageNumber, e->globalPos()); - } -} - - -/****** MarkList ******/ - - -MarkList::MarkList(TQWidget* parent, const char* name) - : TQScrollView(parent, name), clickedThumbnail(0), showThumbnails(true), contextMenu(0) -{ - currentPage = PageNumber::invalidPage; - widgetList.setAutoDelete(true); - setFocusPolicy( TQ_StrongFocus ); - //viewport()->setFocusPolicy( TQ_WheelFocus ); - setResizePolicy(TQScrollView::Manual); - - setVScrollBarMode(TQScrollView::AlwaysOn); - setHScrollBarMode(TQScrollView::AlwaysOff); - - setSizePolicy(TQSizePolicy::MinimumExpanding, TQSizePolicy::MinimumExpanding); - - viewport()->setBackgroundMode(TQt::PaletteBase); - enableClipper(true); -} - -MarkList::~MarkList() -{ - delete contextMenu; -} - -void MarkList::setPageCache(DocumentPageCache* _pageCache) -{ - pageCache = _pageCache; -} - -TQValueList<int> MarkList::selectedPages() const -{ - TQValueList<int> list; - MarkListWidget* item; - for(unsigned int i = 0; i < widgetList.count(); i++) - { - item = widgetList[i]; - if (item->isChecked()) - list << (i + 1); - } - return list; -} - -void MarkList::setNumberOfPages(int numberOfPages, bool _showThumbnails) -{ - showThumbnails = _showThumbnails; - - widgetList.resize(numberOfPages); - - int y = 0; - - for (int page = 1; page <= numberOfPages; page++) - { - MarkListWidget* item = new MarkListWidget(viewport(), this, page, pageCache, showThumbnails); - - connect(item, TQT_SIGNAL(selected(const PageNumber&)), this, TQT_SLOT(thumbnailSelected(const PageNumber&))); - connect(item, TQT_SIGNAL(showPopupMenu(const PageNumber&, const TQPoint&)), this, TQT_SLOT(showPopupMenu(const PageNumber&, const TQPoint&))); - - widgetList.insert(page - 1, item); - - int height = item->setNewWidth(visibleWidth()); - addChild(item, 0, y); - - y += height; - } - resizeContents(visibleWidth(), y); - viewport()->update(); -} - -void MarkList::thumbnailSelected(const PageNumber& pageNumber) -{ - // This variable is set to remember that the next call to setCurrentPageNumber - // has been initiated with a left click on the thumbnail of page pageNumber. - clickedThumbnail = pageNumber; - emit selected(pageNumber); -} - -void MarkList::setCurrentPageNumber(const PageNumber& pageNumber) -{ - if (!pageNumber.isValid() || pageNumber > (int)widgetList.count()) - { - clickedThumbnail = 0; - return; - } - - if (currentPage == pageNumber) - return; - - MarkListWidget* item; - - // Clear old selection - if (currentPage.isValid() && currentPage <= (int)widgetList.count()) - { - item = widgetList[currentPage - 1]; - item->setSelected(false); - } - - // Draw new selection - item = widgetList[pageNumber - 1]; - item->setSelected(true); - - // Make selected page visible if the current page has not been set with a mouseclick - // in the thumbnail list. (We use this because it is a bit confusing if the element that - // you have just clicked on, is scrolled away under the mouse cursor) - if (clickedThumbnail != pageNumber) - ensureVisible(childX(item), childY(item), 0, item->height()); - - clickedThumbnail = 0; - - currentPage = pageNumber; -} - -void MarkList::clear() -{ - currentPage = PageNumber::invalidPage; - widgetList.resize(0); -} - -void MarkList::selectAll() -{ - MarkListWidget* item; - for (unsigned int i = 0; i < widgetList.count(); i++) - { - item = widgetList[i]; - item->setChecked(true); - } -} - -void MarkList::selectEven() -{ - MarkListWidget* item; - for (unsigned int i = 1; i < widgetList.count(); i = i + 2) - { - item = widgetList[i]; - item->setChecked(true); - } -} - -void MarkList::selectOdd() -{ - MarkListWidget* item; - for (unsigned int i = 0; i < widgetList.count(); i = i + 2) - { - item = widgetList[i]; - item->setChecked(true); - } -} - -void MarkList::toggleSelection() -{ - MarkListWidget* item; - for (unsigned int i = 0; i < widgetList.count(); i++) - { - item = widgetList[i]; - item->toggle(); - } -} - -void MarkList::removeSelection() -{ - MarkListWidget* item; - for (unsigned int i = 0; i < widgetList.count(); i++) - { - item = widgetList[i]; - item->setChecked(false); - } -} - -void MarkList::viewportResizeEvent(TQResizeEvent*) -{ - MarkListWidget* item; - - int yold = contentsHeight(); - int y = 0; - - for (unsigned int i = 0; i < widgetList.count(); i++) - { - item = widgetList[i]; - int height = item->setNewWidth(visibleWidth()); - moveChild(item, 0, y); - - y += height; - } - resizeContents(visibleWidth(), y); - - // If the height of the content has changed - if (yold != contentsHeight()) - { - // Make sure the selected item is still visible. - if (currentPage.isValid() && currentPage <= (int)widgetList.count()) - { - item = widgetList[currentPage-1]; - ensureVisible(childX(item), childY(item), 0, item->height()); - } - } - - viewport()->update(); -} - - -void MarkList::updateWidgetSize(const PageNumber& pageNumber) -{ - // safety checks - if (!pageNumber.isValid() || pageNumber > widgetList.count()) - { - kdError() << "MarkList::updateWidgetSize called with invalid pageNumber " << pageNumber << endl; - return; - } - - MarkListWidget* item; - - // Resize the changed widget - item = widgetList[pageNumber - 1]; - int height = item->setNewWidth(visibleWidth()); - int y = childY(item) + height; - - // Move the rest of the widgets - for (unsigned int i = pageNumber; i < widgetList.count(); i++) - { - item = widgetList[i]; - int height = item->height(); - moveChild(item, 0, y); - - y += height; - } - resizeContents(contentsWidth(), y); - - viewport()->update(); -} - -void MarkList::mousePressEvent(TQMouseEvent* e) -{ - if (e->button() == Qt::RightButton) - { - // We call showPopupMenu with an invalid pageNumber to indicate that - // the mouse does not point at a thumbnailWidget. - showPopupMenu(PageNumber::invalidPage, e->globalPos()); - } -} - -void MarkList::slotShowThumbnails(bool show) -{ - if (show != showThumbnails) - { - int numOfPages = widgetList.count(); - - if (numOfPages == 0) - return; - - // Save current page. - PageNumber _currentPage = currentPage; - - // Save page selections. - TQValueVector<bool> selections; - selections.resize(widgetList.count()); - for (unsigned int i = 0; i < widgetList.count(); i++) - selections[i] = widgetList[i]->isChecked(); - - // Rebuild thumbnail widgets. - clear(); - setNumberOfPages(numOfPages, show); - - // Restore current page. - setCurrentPageNumber(_currentPage); - - // Restore page selections - for (unsigned int i = 0; i < widgetList.count(); i++) - widgetList[i]->setChecked(selections[i]); - } -} - - -void MarkList::repaintThumbnails() -{ - bool show = showThumbnails; - int numOfPages = widgetList.count(); - - // Rebuild thumbnail widgets. - clear(); - setNumberOfPages(numOfPages, show); -} - - -void MarkList::showPopupMenu(const PageNumber& pageNumber, const TQPoint& position) -{ - if (contextMenu == 0) - { - // Initialize Contextmenu - contextMenu = new TDEPopupMenu(this, "markListContext"); - - contextMenu->insertItem(i18n("Select &Current Page"), 0); - contextMenu->insertItem(i18n("Select &All Pages"), 1); - contextMenu->insertItem(i18n("Select &Even Pages"), 2); - contextMenu->insertItem(i18n("Select &Odd Pages"), 3); - contextMenu->insertItem(i18n("&Invert Selection"), 4); - contextMenu->insertItem(i18n("&Deselect All Pages"), 5); - } - - if (widgetList.count() == 0) - { - for (int i = 0; i <= 5; i++) - contextMenu->setItemEnabled(i, false); - } - else - { - for (int i = 0; i <= 5; i++) - contextMenu->setItemEnabled(i, true); - } - - // Only allow to select the current page if we got a valid pageNumber. - if (pageNumber.isValid() && pageNumber <= (int)widgetList.count()) - contextMenu->setItemEnabled(0, true); - else - contextMenu->setItemEnabled(0, false); - - // Show Contextmenu - switch(contextMenu->exec(position)) - { - case 0: - widgetList[pageNumber - 1]->toggle(); - break; - - case 1: - selectAll(); - break; - - case 2: - selectEven(); - break; - - case 3: - selectOdd(); - break; - - case 4: - toggleSelection(); - break; - - case 5: - removeSelection(); - break; - } -} - |