diff --git a/printimages/wizard/printoptionspage.cpp b/printimages/wizard/printoptionspage.cpp index 3fd3c4b92..8ee8f734a 100644 --- a/printimages/wizard/printoptionspage.cpp +++ b/printimages/wizard/printoptionspage.cpp @@ -1,610 +1,610 @@ /* ============================================================ * * This file is a part of KDE project * * * Date : 2009-02-08 * Description : a kipi plugin to print images * * Copyright 2009-2012 by Angelo Naselli * * 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, or (at your option) any later version. * * This program 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 General Public License for more details. * * ============================================================ */ #include "printoptionspage.h" // Qt includes #include #include #include #include #include // KDE includes #include #include // Local includes #include "tphoto.h" #include "printimagesconfig.h" #include "signalblocker.h" #include "ui_printoptionspage.h" #include "kipiplugins_debug.h" namespace KIPIPrintImagesPlugin { class PrintOptionsPage::Private : public Ui_PrintOptionsPage { public: QWidget* mParent; QList* m_photos; int m_currentPhoto; QButtonGroup mScaleGroup; QButtonGroup mPositionGroup; KConfigDialogManager* mConfigDialogManager; public: void initPositionFrame() { mPositionFrame->setStyleSheet ( QLatin1String( "QFrame {" " background-color: palette(mid);" " border: 1px solid palette(dark);" "}" "QToolButton {" " border: none;" " background: palette(base);" "}" "QToolButton:hover {" " background: palette(alternate-base);" " border: 1px solid palette(highlight);" "}" "QToolButton:checked {" " background-color: palette(highlight);" "}" ) ); QGridLayout* const layout = new QGridLayout ( mPositionFrame ); - layout->setMargin ( 0 ); + layout->setContentsMargins( 0, 0, 0, 0 ); layout->setSpacing ( 1 ); for ( int row = 0; row < 3; ++row ) { for ( int col = 0; col < 3; ++col ) { QToolButton* const button = new QToolButton ( mPositionFrame ); button->setFixedSize ( 40, 40 ); button->setCheckable ( true ); layout->addWidget ( button, row, col ); Qt::Alignment alignment; if ( row == 0 ) { alignment = Qt::AlignTop; } else if ( row == 1 ) { alignment = Qt::AlignVCenter; } else { alignment = Qt::AlignBottom; } if ( col == 0 ) { alignment |= Qt::AlignLeft; } else if ( col == 1 ) { alignment |= Qt::AlignHCenter; } else { alignment |= Qt::AlignRight; } mPositionGroup.addButton ( button, int ( alignment ) ); } } } }; PrintOptionsPage::PrintOptionsPage(QWidget* const parent, QList* const photoList) : QWidget(), d(new Private) { d->setupUi ( this ); d->mParent = parent; d->m_photos = photoList; d->m_currentPhoto = 0; d->mConfigDialogManager = new KConfigDialogManager ( this, PrintImagesConfig::self() ); d->initPositionFrame(); d->mScaleGroup.addButton ( d->mNoScale, NoScale ); d->mScaleGroup.addButton ( d->mScaleToPage, ScaleToPage ); d->mScaleGroup.addButton ( d->mScaleTo, ScaleToCustomSize ); d->mPhotoXPage->setRange ( 0, d->m_photos->size() ); d->mPX->setSpecialValueText ( i18n ( "disabled" ) ); d->mPY->setSpecialValueText ( i18n ( "disabled" ) ); d->mPhotoXPage->setSpecialValueText ( i18n ( "disabled" ) ); //Change cursor to waitCursor during transition QApplication::setOverrideCursor ( QCursor ( Qt::WaitCursor ) ); // showAdditionalInfo(); imagePreview(); enableButtons(); QApplication::restoreOverrideCursor(); connect ( d->kcfg_PrintWidth, SIGNAL (valueChanged(double)), SLOT (adjustHeightToRatio()) ); connect ( d->kcfg_PrintHeight, SIGNAL (valueChanged(double)), SLOT (adjustWidthToRatio()) ); connect ( d->kcfg_PrintKeepRatio, SIGNAL (toggled(bool)), SLOT (adjustHeightToRatio()) ); connect ( d->mPhotoXPage, SIGNAL (valueChanged(int)), SLOT (photoXpageChanged(int)) ); connect ( d->mPX, SIGNAL (valueChanged(int)), SLOT (horizontalPagesChanged(int)) ); connect ( d->mPY, SIGNAL (valueChanged(int)), SLOT (verticalPagesChanged(int)) ); connect ( d->mRightButton, SIGNAL (clicked()), this, SLOT (selectNext()) ); connect ( d->mLeftButton, SIGNAL (clicked()), this, SLOT (selectPrev()) ); connect ( d->mSaveSettings, SIGNAL (clicked()), this, SLOT (saveConfig()) ); connect ( d->mNoScale, SIGNAL (clicked(bool)), SLOT (scaleOption()) ); connect ( d->mScaleToPage, SIGNAL (clicked(bool)), SLOT (scaleOption()) ); connect ( d->mScaleTo, SIGNAL (clicked(bool)), SLOT (scaleOption()) ); connect ( d->kcfg_PrintAutoRotate, SIGNAL (toggled(bool)), SLOT (autoRotate(bool)) ); connect ( &d->mPositionGroup, SIGNAL (buttonClicked(int)), SLOT (positionChosen(int))); layout()->setMargin ( 0 ); } PrintOptionsPage::~PrintOptionsPage() { delete d; } double PrintOptionsPage::unitToInches ( PrintOptionsPage::Unit unit ) { if ( unit == PrintOptionsPage::Inches ) { return 1.; } else if ( unit == PrintOptionsPage::Centimeters ) { return 1/2.54; } else // Millimeters { return 1/25.4; } } Qt::Alignment PrintOptionsPage::alignment() const { int id = d->mPositionGroup.checkedId(); // qCDebug(KIPIPLUGINS_LOG) << "alignment=" << id; return Qt::Alignment ( id ); } PrintOptionsPage::Unit PrintOptionsPage::scaleUnit() const { d->m_photos->at ( d->m_currentPhoto )->pAddInfo->mUnit = PrintOptionsPage::Unit ( d->kcfg_PrintUnit->currentIndex() ); return PrintOptionsPage::Unit ( d->kcfg_PrintUnit->currentIndex() ); } double PrintOptionsPage::scaleWidth() const { d->m_photos->at ( d->m_currentPhoto )->cropRegion = QRect ( 0, 0, ( int ) ( d->kcfg_PrintWidth->value() * unitToInches ( scaleUnit() ) ), ( int ) ( d->kcfg_PrintHeight->value() * unitToInches ( scaleUnit() ) ) ); return d->kcfg_PrintWidth->value() * unitToInches ( scaleUnit() ); } double PrintOptionsPage::scaleHeight() const { d->m_photos->at ( d->m_currentPhoto )->cropRegion = QRect ( 0, 0, ( int ) ( d->kcfg_PrintWidth->value() * unitToInches ( scaleUnit() ) ), ( int ) ( d->kcfg_PrintHeight->value() * unitToInches ( scaleUnit() ) ) ); return d->kcfg_PrintHeight->value() * unitToInches ( scaleUnit() ); } void PrintOptionsPage::adjustWidthToRatio() { if ( !d->kcfg_PrintKeepRatio->isChecked() ) { return; } double width = d->m_photos->at ( d->m_currentPhoto )->width() * d->kcfg_PrintHeight->value() / d->m_photos->at ( d->m_currentPhoto )->height(); d->m_photos->at ( d->m_currentPhoto )->pAddInfo->mPrintHeight = d->kcfg_PrintHeight->value(); d->m_photos->at ( d->m_currentPhoto )->pAddInfo->mPrintWidth = width ? width : 1.; SignalBlocker blocker ( d->kcfg_PrintWidth ); d->kcfg_PrintWidth->setValue ( d->m_photos->at ( d->m_currentPhoto )->pAddInfo->mPrintWidth ); // qCDebug(KIPIPLUGINS_LOG) << " width " << d->m_photos->at ( d->m_currentPhoto )->pAddInfo->mPrintWidth << " height " << d->m_photos->at ( d->m_currentPhoto )->pAddInfo->mPrintHeight; } void PrintOptionsPage::adjustHeightToRatio() { if ( !d->kcfg_PrintKeepRatio->isChecked() ) { return; } double height = d->m_photos->at ( d->m_currentPhoto )->height() * d->kcfg_PrintWidth->value() / d->m_photos->at ( d->m_currentPhoto )->width(); d->m_photos->at ( d->m_currentPhoto )->pAddInfo->mPrintWidth = d->kcfg_PrintWidth->value(); d->m_photos->at ( d->m_currentPhoto )->pAddInfo->mPrintHeight = height ? height : 1. ; SignalBlocker blocker ( d->kcfg_PrintHeight ); d->kcfg_PrintHeight->setValue ( d->m_photos->at ( d->m_currentPhoto )->pAddInfo->mPrintHeight ); // qCDebug(KIPIPLUGINS_LOG) << "height " << d->m_photos->at ( d->m_currentPhoto )->pAddInfo->mPrintHeight << " width " << d->m_photos->at ( d->m_currentPhoto )->pAddInfo->mPrintWidth; } void PrintOptionsPage::manageQPrintDialogChanges ( QPrinter * /*printer*/ ) { qCDebug(KIPIPLUGINS_LOG) << "It has been called!"; } int PrintOptionsPage::photoXPage() const { return d->mPhotoXPage->value(); } int PrintOptionsPage::mp_horPages() const { return d->mPX->value(); } int PrintOptionsPage::mp_verPages() const { return d->mPY->value(); } bool PrintOptionsPage::printUsingAtkinsLayout() const { return ( d->mPhotoXPage->value() > 0 ); } void PrintOptionsPage::enableButtons() { if ( d->m_photos->size() == 1 ) { d->mLeftButton->setEnabled ( false ); d->mRightButton->setEnabled ( false ); } else if ( d->m_currentPhoto == 0 ) { d->mLeftButton->setEnabled ( false ); d->mRightButton->setEnabled ( true ); } else if ( d->m_currentPhoto == d->m_photos->size()-1 ) { d->mRightButton->setEnabled ( false ); d->mLeftButton->setEnabled ( true ); } else { d->mLeftButton->setEnabled ( true ); d->mRightButton->setEnabled ( true ); } } void PrintOptionsPage::imagePreview() { // qCDebug(KIPIPLUGINS_LOG) << d->m_currentPhoto; TPhoto *pPhoto = d->m_photos->at ( d->m_currentPhoto ); d->mPreview->setPixmap ( pPhoto->thumbnail() ); if ( pPhoto->cropRegion != QRect() ) { // TODO } } void PrintOptionsPage::selectNext() { //Change cursor to waitCursor during transition QApplication::setOverrideCursor ( QCursor ( Qt::WaitCursor ) ); // qCDebug(KIPIPLUGINS_LOG) << d->m_currentPhoto; d->m_photos->at ( d->m_currentPhoto )->pAddInfo->mPrintPosition = alignment(); if ( d->m_currentPhoto+1 < d->m_photos->size() ) d->m_currentPhoto++; showAdditionalInfo(); imagePreview(); enableButtons(); QApplication::restoreOverrideCursor(); } void PrintOptionsPage::selectPrev() { //Change cursor to waitCursor during transition QApplication::setOverrideCursor ( QCursor ( Qt::WaitCursor ) ); // qCDebug(KIPIPLUGINS_LOG) << d->m_currentPhoto; d->m_photos->at ( d->m_currentPhoto )->pAddInfo->mPrintPosition = alignment(); if ( d->m_currentPhoto-1 >= 0 ) d->m_currentPhoto--; showAdditionalInfo(); imagePreview(); enableButtons(); QApplication::restoreOverrideCursor(); } void PrintOptionsPage::setAdditionalInfo() { for ( int i=0; i < d->m_photos->count(); ++i ) { TPhoto* pPhoto = d->m_photos->at ( i ); if ( pPhoto ) { pPhoto->pAddInfo->mUnit = PrintImagesConfig::printUnit(); pPhoto->pAddInfo->mPrintPosition = PrintImagesConfig::printPosition(); pPhoto->pAddInfo->mKeepRatio = PrintImagesConfig::printKeepRatio(); pPhoto->pAddInfo->mScaleMode = PrintImagesConfig::printScaleMode(); pPhoto->pAddInfo->mAutoRotate = PrintImagesConfig::printAutoRotate(); pPhoto->pAddInfo->mPrintWidth = PrintImagesConfig::printWidth(); pPhoto->pAddInfo->mPrintHeight = PrintImagesConfig::printHeight(); pPhoto->pAddInfo->mEnlargeSmallerImages = PrintImagesConfig::printEnlargeSmallerImages(); if (pPhoto->pAddInfo->mKeepRatio) { double height = d->m_photos->at(i)->height() * pPhoto->pAddInfo->mPrintWidth / d->m_photos->at(i)->width(); d->m_photos->at(i)->pAddInfo->mPrintHeight = height ? height : PrintImagesConfig::printHeight(); } // qCDebug(KIPIPLUGINS_LOG) << " photo " << i << " printWidth " << pPhoto->pAddInfo->mPrintWidth // << " printHeight " << pPhoto->pAddInfo->mPrintHeight; // } } } void PrintOptionsPage::showAdditionalInfo() { QAbstractButton* button = nullptr; int i = d->m_currentPhoto; TPhoto* const pPhoto = d->m_photos->at ( i ); if ( pPhoto ) { d->kcfg_PrintUnit->setCurrentIndex ( pPhoto->pAddInfo->mUnit ); button = d->mPositionGroup.button ( pPhoto->pAddInfo->mPrintPosition ); if ( button ) { button->setChecked ( true ); } else { qCWarning(KIPIPLUGINS_LOG) << "Unknown button for position group"; } button = d->mScaleGroup.button ( pPhoto->pAddInfo->mScaleMode ); if ( button ) { button->setChecked ( true ); } else { qCWarning(KIPIPLUGINS_LOG) << "Unknown button for scale group"; } d->kcfg_PrintKeepRatio->setChecked ( pPhoto->pAddInfo->mKeepRatio ); d->kcfg_PrintAutoRotate->setChecked ( pPhoto->pAddInfo->mAutoRotate ); d->kcfg_PrintEnlargeSmallerImages->setChecked ( pPhoto->pAddInfo->mEnlargeSmallerImages ); d->kcfg_PrintWidth->setValue ( pPhoto->pAddInfo->mPrintWidth ); d->kcfg_PrintHeight->setValue ( pPhoto->pAddInfo->mPrintHeight ); if ( d->kcfg_PrintKeepRatio->isChecked() ) { adjustHeightToRatio(); } } } void PrintOptionsPage::loadConfig() { QAbstractButton* button = nullptr; button = d->mPositionGroup.button ( PrintImagesConfig::printPosition() ); if ( button ) { button->setChecked ( true ); } else { qCWarning(KIPIPLUGINS_LOG) << "Unknown button for position group"; } button = d->mScaleGroup.button ( PrintImagesConfig::printScaleMode() ); if ( button ) { button->setChecked ( true ); } else { qCWarning(KIPIPLUGINS_LOG) << "Unknown button for scale group"; } d->mConfigDialogManager->updateWidgets(); // config has been read, now we set photo additional info setAdditionalInfo(); } void PrintOptionsPage::saveConfig() { int position = d->mPositionGroup.checkedId(); PrintImagesConfig::setPrintPosition ( position ); ScaleMode scaleMode = ScaleMode ( d->mScaleGroup.checkedId() ); PrintImagesConfig::setPrintScaleMode ( scaleMode ); bool checked = d->kcfg_PrintAutoRotate->isChecked(); PrintImagesConfig::setPrintAutoRotate ( checked ); d->mConfigDialogManager->updateSettings(); PrintImagesConfig::self()->save(); } void PrintOptionsPage::photoXpageChanged ( int i ) { bool disabled = ( i>0 ); d->mPositionFrame->setDisabled ( disabled ); d->mGroupScaling->setDisabled ( disabled ); d->mGroupImage->setDisabled ( disabled ); d->kcfg_PrintAutoRotate->setDisabled ( disabled ); d->mPreview->setDisabled ( disabled ); if ( disabled ) { d->mRightButton->setDisabled ( disabled ); d->mLeftButton->setDisabled ( disabled ); SignalBlocker block_mPX ( d->mPX ); d->mPX->setValue ( 0 ); SignalBlocker block_mPY ( d->mPY ); d->mPY->setValue ( 0 ); } else { enableButtons(); } } void PrintOptionsPage::horizontalPagesChanged ( int i ) { bool disabled = ( i>0 ); d->mPositionFrame->setDisabled ( disabled ); d->mGroupScaling->setDisabled ( disabled ); d->mGroupImage->setDisabled ( disabled ); d->kcfg_PrintAutoRotate->setDisabled ( disabled ); d->mPreview->setDisabled ( disabled ); if ( disabled ) { d->mRightButton->setDisabled ( disabled ); d->mLeftButton->setDisabled ( disabled ); SignalBlocker blocker ( d->mPhotoXPage ); d->mPhotoXPage->setValue ( 0 ); if ( d->mPY->value() == 0 ) { SignalBlocker block_mPY ( d->mPY ); d->mPY->setValue ( 1 ); } } else { SignalBlocker block_mPX ( d->mPY ); d->mPY->setValue ( 0 ); enableButtons(); } } void PrintOptionsPage::verticalPagesChanged ( int i ) { bool disabled = ( i>0 ); d->mPositionFrame->setDisabled ( disabled ); d->mGroupScaling->setDisabled ( disabled ); d->mGroupImage->setDisabled ( disabled ); d->kcfg_PrintAutoRotate->setDisabled ( disabled ); d->mPreview->setDisabled ( disabled ); if ( disabled ) { d->mRightButton->setDisabled ( disabled ); d->mLeftButton->setDisabled ( disabled ); SignalBlocker blocker ( d->mPhotoXPage ); d->mPhotoXPage->setValue ( 0 ); if ( d->mPX->value() == 0 ) { SignalBlocker block_mPX ( d->mPX ); d->mPX->setValue ( 1 ); } } else { SignalBlocker block_mPX ( d->mPX ); d->mPX->setValue ( 0 ); enableButtons(); } } void PrintOptionsPage::scaleOption() { ScaleMode scaleMode = ScaleMode ( d->mScaleGroup.checkedId() ); // qCDebug(KIPIPLUGINS_LOG) << "ScaleMode " << int ( scaleMode ); int i = d->m_currentPhoto; TPhoto* const pPhoto = d->m_photos->at ( i ); if (pPhoto) { pPhoto->pAddInfo->mScaleMode = scaleMode; } if (scaleMode == ScaleToCustomSize && d->kcfg_PrintKeepRatio->isChecked()) { adjustHeightToRatio(); } } void PrintOptionsPage::autoRotate ( bool value ) { int i = d->m_currentPhoto; TPhoto* const pPhoto = d->m_photos->at ( i ); if ( pPhoto ) { pPhoto->pAddInfo->mAutoRotate = value; } } void PrintOptionsPage::positionChosen(int id) { // qCDebug(KIPIPLUGINS_LOG) << "Current photo " << d->m_currentPhoto << "position " << id; d->m_photos->at(d->m_currentPhoto)->pAddInfo->mPrintPosition = Qt::Alignment(id); } } // namespace KIPIPrintImagesPlugin diff --git a/rajce/rajcewidget.cpp b/rajce/rajcewidget.cpp index 6923d46b9..4e33587f1 100644 --- a/rajce/rajcewidget.cpp +++ b/rajce/rajcewidget.cpp @@ -1,498 +1,498 @@ /* ============================================================ * * This file is a part of KDE project * * * Date : 2011-04-12 * Description : A KIPI Plugin to export albums to rajce.net * * Copyright (C) 2011 by Lukas Krejci * * 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, or (at your option) any later version. * * This program 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 General Public License for more details. * * ============================================================ */ #include "rajcewidget.h" // Qt includes #include #include #include #include #include #include #include #include #include #include #include #include #include #include // KDE includes #include #include #include // Libkipi includes #include #include // Local includes #include "rajcesession.h" #include "newalbumdialog.h" #include "kpimageslist.h" #include "kpsettingswidget.h" #include "kplogindialog.h" namespace KIPIRajcePlugin { RajceWidget::RajceWidget(KIPI::Interface* const interface, const QString& tmpFolder, QWidget* const parent) : KPSettingsWidget(parent, interface, QString::fromLatin1("Rajce.net")) { m_lastLoggedInState = false; m_session = new RajceSession(this, tmpFolder); m_uploadingPhotos = false; m_albumsCoB = getAlbumsCoB(); m_dimensionSpB = getDimensionSpB(); m_imageQualitySpB = getImgQualitySpB(); m_newAlbumBtn = getNewAlbmBtn(); m_reloadAlbumsBtn = getReloadBtn(); m_progressBar = progressBar(); m_imgList = imagesList(); m_changeUserBtn = getChangeUserBtn(); getUploadBox()->hide(); getSizeBox()->hide(); updateLabels(); // ------------------------------------------------------------------------ connect(m_session, SIGNAL(busyStarted(uint)), this, SLOT(progressStarted(uint))); connect(m_session, SIGNAL(busyFinished(uint)), this, SLOT(progressFinished(uint))); connect(m_session, SIGNAL(busyProgress(uint,uint)), this, SLOT(progressChange(uint,uint))); connect(m_changeUserBtn, SIGNAL(clicked()), this, SLOT(changeUserClicked())); connect(m_newAlbumBtn, SIGNAL(clicked()), this, SLOT(createAlbum())); connect(m_reloadAlbumsBtn, SIGNAL(clicked()), this, SLOT(loadAlbums())); connect(m_albumsCoB, SIGNAL(currentIndexChanged(QString)), this, SLOT(selectedAlbumChanged(QString))); } void RajceWidget::updateLabels(const QString&, const QString&) { bool loggedIn = !m_session->state().sessionToken().isEmpty(); if (loggedIn != m_lastLoggedInState) { m_lastLoggedInState = loggedIn; emit loginStatusChanged(loggedIn); } QString username = loggedIn ? m_session->state().username() : QString::fromLatin1(""); QString nickname = loggedIn ? m_session->state().nickname() : i18n("Not logged in"); getUserNameLabel()->setText(QString::fromLatin1("%2 %1").arg(username, nickname)); QString link = loggedIn ? QString::fromLatin1("

" "Rajce.net" "

") : QString::fromLatin1("

" "Rajce.net" "

"); getHeaderLbl()->setText(link); disconnect(m_albumsCoB, SIGNAL(currentIndexChanged(QString)), this, SLOT(selectedAlbumChanged(QString))); m_albumsCoB->clear(); Album album; int selIdx = 0, i = 0; foreach(album, m_session->state().albums()) { m_albumsCoB->addItem(album.name, QVariant::fromValue(album)); if (m_currentAlbumName == album.name) { selIdx = i; } ++i; } if (!m_currentAlbumName.isEmpty()) { m_albumsCoB->setCurrentIndex(selIdx); } connect(m_albumsCoB, SIGNAL(currentIndexChanged(QString)), this, SLOT(selectedAlbumChanged(QString))); unsigned max = m_session->state().maxHeight(); max = max > m_session->state().maxWidth() ? max : m_session->state().maxWidth(); m_dimensionSpB->setMaximum(max); if (m_dimensionSpB->value() == 0) { m_dimensionSpB->setValue(max); } m_newAlbumBtn->setEnabled(loggedIn); m_albumsCoB->setEnabled(loggedIn); m_reloadAlbumsBtn->setEnabled(loggedIn); m_dimensionSpB->setEnabled(loggedIn); m_imageQualitySpB->setEnabled(loggedIn); if (m_session->state().lastErrorCode() != 0) { m_progressBar->setVisible(true); switch (m_session->state().lastErrorCode()) { case UnknownError: m_progressBar->setFormat(i18n("Unknown error")); break; case InvalidCommand: m_progressBar->setFormat(i18n("Invalid command")); break; case InvalidCredentials: m_progressBar->setFormat(i18n("Invalid login name or password")); break; case InvalidSessionToken: m_progressBar->setFormat(i18n("Session expired")); break; case InvalidOrRepeatedColumnName: break; case InvalidAlbumId: m_progressBar->setFormat(i18n("Unknown album")); break; case AlbumDoesntExistOrNoPrivileges: m_progressBar->setFormat(i18n("Unknown album")); break; case InvalidAlbumToken: m_progressBar->setFormat(i18n("Failed to open album")); break; case AlbumNameEmpty: m_progressBar->setFormat(i18n("The album name cannot be empty")); break; case FailedToCreateAlbum: m_progressBar->setFormat(i18n("Failed to create album")); break; case AlbumDoesntExist: m_progressBar->setFormat(i18n("Album does not exist")); break; case UnknownApplication: break; case InvalidApplicationKey: break; case FileNotAttached: m_progressBar->setFormat(i18n("File upload failed")); break; case NewerVersionExists: break; case SavingFileFailed: m_progressBar->setFormat(i18n("File upload failed")); break; case UnsupportedFileExtension: m_progressBar->setFormat(i18n("Unsupported file extension")); break; case UnknownClientVersion: break; case NonexistentTarget: break; default: break; } QPalette palette = m_progressBar->palette(); - palette.setColor(QPalette::Active, QPalette::Background, Qt::darkRed); + palette.setColor(QPalette::Active, QPalette::Window, Qt::darkRed); m_progressBar->setPalette(palette); } } void RajceWidget::reactivate() { m_imgList->listView()->clear(); m_imgList->loadImagesFromCurrentSelection(); m_session->clearLastError(); updateLabels(); } void RajceWidget::progressChange(unsigned /*commandType*/, unsigned int percent) { if (m_uploadingPhotos) { unsigned idx = m_currentUploadImage - m_uploadQueue.begin() - 1; float perc = (float)idx / m_uploadQueue.size(); perc += (float)percent / 100 / m_uploadQueue.size(); percent = perc * 100; } m_progressBar->setValue(percent); } void RajceWidget::progressFinished(unsigned) { if (m_uploadingPhotos) { unsigned idx = m_currentUploadImage - m_uploadQueue.begin(); float perc = (float)idx / m_uploadQueue.size(); m_progressBar->setValue(perc * 100); } else { m_progressBar->setVisible(false); _setEnabled(true); updateLabels(); } } void RajceWidget::progressStarted(unsigned commandType) { QString text; /* enum RajceCommandType { Login = 0, Logout, ListAlbums, CreateAlbum, OpenAlbum, CloseAlbum, AddPhoto }; */ switch(commandType) { case Login: text = i18n("Logging in %v%"); break; case Logout: text = i18n("Logging out %v%"); break; case ListAlbums: text = i18n("Loading albums %v%"); break; case CreateAlbum: text = i18n("Creating album %v%"); break; case OpenAlbum: text = i18n("Opening album %v%"); break; case CloseAlbum: text = i18n("Closing album %v%"); break; case AddPhoto: text = i18n("Adding photos %v%"); break; } if (!m_uploadingPhotos) { m_progressBar->setValue(0); } m_progressBar->setFormat(text); m_progressBar->setVisible(true); _setEnabled(false); } void RajceWidget::changeUserClicked() { KIPIPlugins::KPLoginDialog* const dlg = new KIPIPlugins::KPLoginDialog(this, QString::fromLatin1("Rajce.net")); if (dlg->exec() == QDialog::Accepted) { m_session->clearLastError(); connect(m_session, SIGNAL(busyFinished(uint)), this, SLOT(loadAlbums())); m_session->login(dlg->login(), dlg->password()); } delete dlg; } void RajceWidget::loadAlbums() { disconnect(m_session, SIGNAL(busyFinished(uint)), this, SLOT(loadAlbums())); m_session->loadAlbums(); } void RajceWidget::createAlbum() { NewAlbumDialog* const dlg = new NewAlbumDialog(this); if (dlg->exec() == QDialog::Accepted) { m_session->clearLastError(); connect(m_session, SIGNAL(busyFinished(uint)), this, SLOT(loadAlbums())); m_session->createAlbum(dlg->albumName(), dlg->albumDescription(), dlg->albumVisible()); } delete dlg; } void RajceWidget::startUpload() { m_session->clearLastError(); _setEnabled(false); m_uploadQueue.clear(); foreach(const QUrl& image, m_imgList->imageUrls(true)) { QString imagePath = image.toLocalFile(); m_uploadQueue.append(imagePath); } if (m_uploadQueue.isEmpty()) { _setEnabled(true); return; } connect(m_session, SIGNAL(busyFinished(uint)), this, SLOT(startUploadAfterAlbumOpened())); QString albumName = m_albumsCoB->currentText(); Album album; foreach(Album a, m_session->state().albums()) { if (a.name == albumName) { album = a; break; } } if (album.name == albumName) { m_session->openAlbum(album); } } void RajceWidget::startUploadAfterAlbumOpened() { disconnect(m_session, SIGNAL(busyFinished(uint)), this, SLOT(startUploadAfterAlbumOpened())); connect(m_session, SIGNAL(busyFinished(uint)), this, SLOT(uploadNext())); m_uploadingPhotos = true; m_progressBar->setValue(0); progressStarted(AddPhoto); m_currentUploadImage = m_uploadQueue.begin(); uploadNext(); } void RajceWidget::closeAlbum() { _setEnabled(true); disconnect(m_session, SIGNAL(busyFinished(uint)), this, SLOT(closeAlbum())); m_uploadQueue.clear(); m_progressBar->setVisible(false); m_uploadingPhotos = false; } void RajceWidget::uploadNext() { QList::Iterator tmp = m_currentUploadImage; if (m_currentUploadImage == m_uploadQueue.end()) { m_imgList->processed(QUrl::fromLocalFile(*(--tmp)), (m_session->state().lastErrorCode() == 0)); cancelUpload(); return; } if (m_currentUploadImage != m_uploadQueue.begin()) { m_imgList->processed(QUrl::fromLocalFile(*(--tmp)), (m_session->state().lastErrorCode() == 0)); } m_imgList->processing(QUrl::fromLocalFile(*m_currentUploadImage)); QString currentPhoto = *m_currentUploadImage; ++m_currentUploadImage; unsigned dimension = m_dimensionSpB->value(); int jpgQuality = m_imageQualitySpB->value(); m_session->uploadPhoto(currentPhoto, dimension, jpgQuality); } void RajceWidget::cancelUpload() { if (m_uploadingPhotos && m_currentUploadImage != m_uploadQueue.begin() && m_currentUploadImage != m_uploadQueue.end()) { m_imgList->processed(QUrl::fromLocalFile(*m_currentUploadImage), false); } disconnect(m_session, SIGNAL(busyFinished(uint)), this, SLOT(uploadNext())); connect(m_session, SIGNAL(busyFinished(uint)), this, SLOT(closeAlbum())); m_session->cancelCurrentCommand(); m_session->closeAlbum(); m_uploadQueue.clear(); } void RajceWidget::selectedAlbumChanged(const QString& newName) { m_currentAlbumName = newName; } void RajceWidget::_setEnabled(bool enabled) { m_changeUserBtn->setEnabled(enabled); m_newAlbumBtn->setEnabled(enabled); m_albumsCoB->setEnabled(enabled); m_reloadAlbumsBtn->setEnabled(enabled); m_dimensionSpB->setEnabled(enabled); m_imageQualitySpB->setEnabled(enabled); emit loginStatusChanged(enabled); } void RajceWidget::readSettings() { KConfig config(QString::fromLatin1("kipirc")); KConfigGroup grp = config.group("RajceExport Settings"); SessionState state; state.sessionToken() = grp.readEntry("token"); state.username() = grp.readEntry("username"); state.nickname() = grp.readEntry("nickname"); m_currentAlbumName = grp.readEntry("album"); state.maxHeight() = grp.readEntry("maxHeight", 1200); state.maxWidth() = grp.readEntry("maxWidth", 1200); state.imageQuality() = grp.readEntry("imageQuality", 85); m_session->init(state); if (!m_session->state().sessionToken().isEmpty()) { m_session->loadAlbums(); } } void RajceWidget::writeSettings() { KConfig config(QString::fromLatin1("kipirc")); KConfigGroup grp = config.group("RajceExport Settings"); const SessionState& state = m_session->state(); grp.writeEntry("token", state.sessionToken()); grp.writeEntry("username", state.username()); grp.writeEntry("nickname", state.nickname()); grp.writeEntry("album", m_currentAlbumName); grp.writeEntry("maxWidth", state.maxWidth()); grp.writeEntry("maxHeight", state.maxHeight()); grp.writeEntry("imageQuality", state.imageQuality()); } } // namespace KIPIRajcePlugin