ImageViewer: Update toolbar items for split/duplicated editors

The "export" button in a split/duplicated view was enabled for other
image formats than svg. The image size label was empty.

Fixes for all views (not just the split ones): The play button is now
disabled instead of "empty" for non-movies. The size of svgs is
displayed.

Change-Id: I1f6a2c47f3aa06ed052ba78e5e2d1edd51a0ec69
Reviewed-by: Alessandro Portale <alessandro.portale@theqtcompany.com>
This commit is contained in:
Alessandro Portale
2016-04-14 09:35:39 +02:00
parent 2b05793083
commit 62fc258ac0
3 changed files with 20 additions and 17 deletions

View File

@@ -151,6 +151,8 @@ void ImageViewer::ctor()
this, &ImageViewer::imageSizeUpdated); this, &ImageViewer::imageSizeUpdated);
connect(d->file.data(), &ImageViewerFile::openFinished, connect(d->file.data(), &ImageViewerFile::openFinished,
d->imageView, &ImageView::createScene); d->imageView, &ImageView::createScene);
connect(d->file.data(), &ImageViewerFile::openFinished,
this, &ImageViewer::updateToolButtons);
connect(d->file.data(), &ImageViewerFile::aboutToReload, connect(d->file.data(), &ImageViewerFile::aboutToReload,
d->imageView, &ImageView::reset); d->imageView, &ImageView::reset);
connect(d->file.data(), &ImageViewerFile::reloadFinished, connect(d->file.data(), &ImageViewerFile::reloadFinished,
@@ -159,12 +161,6 @@ void ImageViewer::ctor()
this, &ImageViewer::updatePauseAction); this, &ImageViewer::updatePauseAction);
connect(d->imageView, &ImageView::scaleFactorChanged, connect(d->imageView, &ImageView::scaleFactorChanged,
this, &ImageViewer::scaleFactorUpdate); this, &ImageViewer::scaleFactorUpdate);
connect(d->file.data(), &ImageViewerFile::openFinished,
this, [this](bool success)
{
d->ui_toolbar.toolButtonExportImage->setEnabled(success && d->file->type() == ImageViewerFile::TypeSvg);
});
} }
ImageViewer::~ImageViewer() ImageViewer::~ImageViewer()
@@ -188,6 +184,8 @@ Core::IEditor *ImageViewer::duplicate()
{ {
auto other = new ImageViewer(d->file); auto other = new ImageViewer(d->file);
other->d->imageView->createScene(); other->d->imageView->createScene();
other->updateToolButtons();
other->d->ui_toolbar.labelImageSize->setText(d->ui_toolbar.labelImageSize->text());
return other; return other;
} }
@@ -241,6 +239,12 @@ void ImageViewer::fitToScreen()
d->ui_toolbar.toolButtonFitToScreen->click(); d->ui_toolbar.toolButtonFitToScreen->click();
} }
void ImageViewer::updateToolButtons()
{
d->ui_toolbar.toolButtonExportImage->setEnabled(d->file->type() == ImageViewerFile::TypeSvg);
updatePauseAction();
}
void ImageViewer::togglePlay() void ImageViewer::togglePlay()
{ {
d->ui_toolbar.toolButtonPlayPause->click(); d->ui_toolbar.toolButtonPlayPause->click();
@@ -254,15 +258,13 @@ void ImageViewer::playToggled()
void ImageViewer::updatePauseAction() void ImageViewer::updatePauseAction()
{ {
bool isMovie = d->file->type() == ImageViewerFile::TypeMovie; bool isMovie = d->file->type() == ImageViewerFile::TypeMovie;
d->ui_toolbar.toolButtonPlayPause->setVisible(isMovie); if (isMovie && !d->file->isPaused()) {
if (isMovie) {
if (d->file->isPaused()) {
d->ui_toolbar.toolButtonPlayPause->setToolTipBase(tr("Play Animation"));
d->ui_toolbar.toolButtonPlayPause->setIcon(Core::Icons::RUN_SMALL.pixmap());
} else {
d->ui_toolbar.toolButtonPlayPause->setToolTipBase(tr("Pause Animation")); d->ui_toolbar.toolButtonPlayPause->setToolTipBase(tr("Pause Animation"));
d->ui_toolbar.toolButtonPlayPause->setIcon(Core::Icons::INTERRUPT_SMALL.pixmap()); d->ui_toolbar.toolButtonPlayPause->setIcon(Core::Icons::INTERRUPT_SMALL.icon());
} } else {
d->ui_toolbar.toolButtonPlayPause->setToolTipBase(tr("Play Animation"));
d->ui_toolbar.toolButtonPlayPause->setIcon(Core::Icons::RUN_SMALL.icon());
d->ui_toolbar.toolButtonPlayPause->setEnabled(isMovie);
} }
} }

View File

@@ -66,6 +66,7 @@ public slots:
void zoomOut(); void zoomOut();
void resetToOriginalSize(); void resetToOriginalSize();
void fitToScreen(); void fitToScreen();
void updateToolButtons();
void togglePlay(); void togglePlay();
private slots: private slots:

View File

@@ -108,7 +108,7 @@ Core::IDocument::OpenResult ImageViewerFile::openImpl(QString *errorString, cons
if (format.startsWith("svg")) { if (format.startsWith("svg")) {
m_tempSvgItem = new QGraphicsSvgItem(fileName); m_tempSvgItem = new QGraphicsSvgItem(fileName);
QRectF bound = m_tempSvgItem->boundingRect(); QRectF bound = m_tempSvgItem->boundingRect();
if (bound.width() == 0 && bound.height() == 0) { if (qFuzzyIsNull(bound.width()) && qFuzzyIsNull(bound.height())) {
delete m_tempSvgItem; delete m_tempSvgItem;
m_tempSvgItem = 0; m_tempSvgItem = 0;
if (errorString) if (errorString)
@@ -116,7 +116,7 @@ Core::IDocument::OpenResult ImageViewerFile::openImpl(QString *errorString, cons
return OpenResult::CannotHandle; return OpenResult::CannotHandle;
} }
m_type = TypeSvg; m_type = TypeSvg;
emit imageSizeChanged(QSize()); emit imageSizeChanged(m_tempSvgItem->boundingRect().size().toSize());
} else } else
#endif #endif
if (QMovie::supportedFormats().contains(format)) { if (QMovie::supportedFormats().contains(format)) {