/** Replaces the ImagesList::slotAddImages method, so that * MyImageListViewItems can be added instead of ImagesListViewItems */ void MyImageList::slotAddImages(const KUrl::List& list) { // Figure out which of the supplied URL's should actually be added and which // of them already exist. bool found = false; for (KUrl::List::ConstIterator it = list.constBegin(); it != list.constEnd(); ++it) { KUrl imageUrl = *it; found = false; for (int i = 0; i < listView()->topLevelItemCount(); ++i) { MyImageListViewItem* const currItem = dynamic_cast<MyImageListViewItem*>(listView()->topLevelItem(i)); if (currItem && currItem->url() == imageUrl) { found = true; break; } } if (!found && KPMetadata::isRawFile(imageUrl)) { new MyImageListViewItem(listView(), imageUrl); } } // Duplicate the signalImageListChanged of the ImageWindow, to enable the // upload button again. emit signalImageListChanged(); }
ItemsPage::ItemsPage(Manager* const mngr, KPWizardDialog* const dlg) : KPWizardPage(dlg, i18nc("@title:window", "<b>Set Panorama Images</b>")), d(new Private) { d->mngr = mngr; KPVBox* const vbox = new KPVBox(this); QLabel* const label1 = new QLabel(vbox); label1->setWordWrap(true); label1->setText(i18n("<qt>" "<p>Set here the list of your images to blend into a panorama. " "Please follow these conditions:</p>" "<ul><li>Images are taken from the same point of view.</li>" "<li>Images are taken with the same camera (and lens).</li>" "<li>Do not mix images with different color depth.</li></ul>" "<p>Note that, in the case of a 360° panorama, the first image " "in the list will be the image that will be in the center of " "the panorama.</p>" "</qt>")); d->list = new KPImagesList(vbox); d->list->slotAddImages(d->mngr->itemsList()); setPageWidget(vbox); QPixmap leftPix(QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("kipiplugin_panorama/pics/assistant-stack.png"))); setLeftBottomPix(leftPix.scaledToWidth(128, Qt::SmoothTransformation)); connect(d->list, SIGNAL(signalImageListChanged()), this, SLOT(slotImageListChanged())); QTimer::singleShot(0, this, SLOT(slotSetupList())); }
void ImgurImagesList::slotAddImages(const QList<QUrl>& list) { /* Replaces the KPImagesList::slotAddImages method, so that * ImgurImageListViewItems can be added instead of ImagesListViewItems */ // Figure out which of the supplied URL's should actually be added and which // of them already exist. bool found; for (QList<QUrl>::ConstIterator it = list.constBegin(); it != list.constEnd(); ++it) { QUrl imageUrl = *it; found = false; if (iface()) { QPointer<MetadataProcessor> meta = iface()->createMetadataProcessor(); if (meta && meta->load(imageUrl)) { const QString sUrl = meta->getXmpTagString(QLatin1String("Xmp.kipi.Imgur.Hash")); const QString sDeleteUrl = meta->getXmpTagString(QLatin1String("Xmp.kipi.Imgur.Delete")); for (int i = 0; i < listView()->topLevelItemCount(); ++i) { ImgurImageListViewItem* const currItem = dynamic_cast<ImgurImageListViewItem*>(listView()->topLevelItem(i)); if (currItem && currItem->url() == imageUrl) { found = true; if (!sUrl.isEmpty()) { currItem->setUrl(sUrl); } if (!sDeleteUrl.isEmpty()) { currItem->setDeleteUrl(sDeleteUrl); } break; } } if (!found) { new ImgurImageListViewItem(listView(), imageUrl); } } } } // Duplicate the signalImageListChanged of the ImageWindow, to enable the // upload button again. emit signalImageListChanged(); emit signalAddItems(list); }
void DNGImagesList::slotAddItems() { DNGImageDialog dlg(this, iface()); KUrl::List urls = dlg.urls(); if (!urls.isEmpty()) slotAddImages(urls); emit signalImageListChanged(); }
void RemoveRedEyesWindow::setBusy(bool busy) { d->busy = busy; if (busy) { // disable connection to make sure that the "test run" and "correct photos" // buttons are not enabled again on ImageListChange disconnect(d->imageList, SIGNAL(signalImageListChanged()), this, SLOT(imageListChanged())); disconnect(this, SIGNAL(myCloseClicked()), this, SLOT(closeClicked())); setButtonGuiItem(Close, KStandardGuiItem::cancel()); enableButton(User1, false); // correction button enableButton(User2, false); // testrun button connect(this, SIGNAL(myCloseClicked()), this, SLOT(cancelCorrection())); d->settingsTab->setEnabled(false); } else { // enable connection again to make sure that an empty image list will // disable the "test run" and "correct photos" buttons connect(d->imageList, SIGNAL(signalImageListChanged()), this, SLOT(imageListChanged())); disconnect(this, SIGNAL(myCloseClicked()), this, SLOT(cancelCorrection())); setButtonGuiItem(Close, KStandardGuiItem::close()); enableButton(User1, true); // correction button enableButton(User2, true); // testrun button connect(this, SIGNAL(myCloseClicked()), this, SLOT(closeClicked())); d->settingsTab->setEnabled(true); } }
ItemsPage::ItemsPage(Manager* const mngr, KAssistantDialog* const dlg) : KPWizardPage(dlg, i18n("<b>Set Bracketed Images</b>")), d(new ItemsPagePriv) { d->mngr = mngr; KVBox* vbox = new KVBox(this); QLabel* label1 = new QLabel(vbox); label1->setWordWrap(true); label1->setText(i18n("<qt>" "<p>Set here the list of your bracketed images to fuse. Please follow these conditions:</p>" "<ul><li>At least 2 images from the same subject must be added to the stack.</li>" "<li>Do not mix images with different color depth.</li>" "<li>All images must have the same dimensions.</li></ul>" "</qt>")); d->list = new KPImagesList(vbox); d->list->listView()->setColumn(KPImagesListView::User1, i18n("Exposure (EV)"), true); d->list->slotAddImages(d->mngr->itemsList()); setPageWidget(vbox); QPixmap leftPix = KStandardDirs::locate("data", "kipiplugin_expoblending/pics/assistant-stack.png"); setLeftBottomPix(leftPix.scaledToWidth(128, Qt::SmoothTransformation)); connect(d->mngr->thread(), SIGNAL(starting(KIPIExpoBlendingPlugin::ActionData)), this, SLOT(slotAction(KIPIExpoBlendingPlugin::ActionData))); connect(d->mngr->thread(), SIGNAL(finished(KIPIExpoBlendingPlugin::ActionData)), this, SLOT(slotAction(KIPIExpoBlendingPlugin::ActionData))); connect(d->list, SIGNAL(signalAddItems(KUrl::List)), this, SLOT(slotAddItems(KUrl::List))); connect(d->list, SIGNAL(signalImageListChanged()), this, SLOT(slotImageListChanged())); QTimer::singleShot(0, this, SLOT(slotSetupList())); }
HTMLSelectionPage::HTMLSelectionPage(QWizard* const dialog, const QString& title) : DWizardPage(dialog, title), d(new Private(dialog)) { setObjectName(QLatin1String("AlbumSelectorPage")); d->stack = new QStackedWidget(this); d->albumSupport = (d->iface && d->iface->supportAlbums()); if (d->albumSupport) { d->albumSelector = d->iface->albumChooser(this); } else { d->albumSelector = new QWidget(this); } d->stack->insertWidget(GalleryInfo::ALBUMS, d->albumSelector); d->imageList = new DItemsList(this); d->imageList->setObjectName(QLatin1String("HTMLGalleries ImagesList")); d->imageList->setControlButtonsPlacement(DItemsList::ControlButtonsBelow); d->stack->insertWidget(GalleryInfo::IMAGES, d->imageList); setPageWidget(d->stack); setLeftBottomPix(QIcon::fromTheme(QLatin1String("folder-pictures"))); if (d->albumSupport) { connect(d->iface, SIGNAL(signalAlbumChooserSelectionChanged()), this, SIGNAL(completeChanged())); } connect(d->imageList, SIGNAL(signalImageListChanged()), this, SIGNAL(completeChanged())); }