28#include <qguardedptr.h>
33#include <qpushbutton.h>
41#include <kstandarddirs.h>
42#include <kio/previewjob.h>
43#include <kapplication.h>
44#include <kaboutdata.h>
46#include <kiconloader.h>
47#include <kpopupmenu.h>
56#include "imagedialog.moc"
66 : KListViewItem(parent, album.name()),
_album(album) {}
75 : KListViewItem(parent, url.fileName()),
_url(url) {}
96 : KDialogBase(KDialogBase::Plain, i18n(
"Select Image From Album"), Help|Ok|Cancel,
97 Ok, parent,
"album-dialog", true, true)
101 d->_singleSelection = singleSelection;
103 QWidget* box = plainPage();
104 QVBoxLayout *dvlay =
new QVBoxLayout( box, 6 );
110 KAboutData* about =
new KAboutData(
"kipiplugins",
111 I18N_NOOP(
"Image selector dialog"),
113 I18N_NOOP(
"A Kipi dialog for image selection"),
114 KAboutData::License_GPL,
115 "(c) 2004,2007, Kipi development team",
117 "http://www.kipi-plugins.org");
119 QPushButton *helpButton = actionButton( Help );
120 KHelpMenu* helpMenu =
new KHelpMenu(
this, about,
false);
121 helpMenu->menu()->removeItemAt(0);
122 helpMenu->menu()->insertItem(i18n(
"Kipi Plugins Handbooks"),
this, SLOT(slotHelp()), 0, -1, 0);
123 helpButton->setPopup( helpMenu->menu() );
127 QSplitter* splitter =
new QSplitter(box);
129 d->_albumList=
new KListView(splitter);
130 d->_albumList->addColumn(i18n(
"Album Name"));
131 d->_albumList->setMinimumWidth(200);
132 d->_albumList->setResizeMode(QListView::LastColumn);
134 d->_imageList=
new KListView(splitter);
135 d->_imageList->addColumn(i18n(
"Image Name"));
136 d->_imageList->setMinimumWidth(200);
137 d->_imageList->setSelectionMode(singleSelection ? QListView::Single :
138 QListView::Extended);
139 d->_imageList->setResizeMode(QListView::LastColumn);
141 d->_preview=
new QLabel(splitter);
142 d->_preview->setAlignment(AlignHCenter | AlignVCenter | WordBreak);
144 d->_preview->setText(i18n(
"No image selected"));
146 dvlay->addWidget( splitter );
148 d->_albums=d->_interface->allAlbums();
149 QValueList<ImageCollection>::ConstIterator it=d->_albums.begin();
151 for(; it!=d->_albums.end(); ++it)
155 QTimer::singleShot(0,
this, SLOT(slotInitialShow()));
157 connect(d->_albumList, SIGNAL(selectionChanged(QListViewItem*)),
158 this, SLOT(fillImageList(QListViewItem*)) );
161 connect(d->_imageList, SIGNAL(selectionChanged(QListViewItem*)),
162 this, SLOT(slotImageSelected(QListViewItem*)) );
164 connect(d->_imageList, SIGNAL(selectionChanged()),
165 this, SLOT(slotImagesSelected()));
167 enableButtonOK(
false);
189 if (dlg.exec() == QDialog::Accepted)
202 if (dlg.exec() == QDialog::Accepted)
211void ImageDialog::fillImageList(QListViewItem* item)
217 KURL::List images=album.
images();
219 KURL::List::ConstIterator it=images.begin();
220 for (;it!=images.end(); ++it)
226void ImageDialog::slotImageSelected(QListViewItem* item)
230 enableButtonOK(
false);
231 d->_preview->setText(i18n(
"No image selected"));
235 enableButtonOK(
true);
236 d->_url=
static_cast<ImageLVI*
>(item)->_url;
237 d->_preview->clear();
239 KIO::PreviewJob* thumbJob = KIO::filePreview(d->_url,
PREVIEW_SIZE);
240 connect( thumbJob, SIGNAL(gotPreview(
const KFileItem*,
const QPixmap&)),
241 SLOT(slotGotPreview(
const KFileItem* ,
const QPixmap&)));
244void ImageDialog::slotImagesSelected()
248 d->_preview->clear();
250 QListViewItem* selectedItem = 0;
251 QListViewItem* listItem = d->_imageList->firstChild();
254 if (listItem->isSelected())
256 selectedItem = listItem;
257 d->_urls.append(
static_cast<ImageLVI*
>(listItem)->_url);
259 listItem = listItem->nextSibling();
264 enableButtonOK(
false);
265 d->_preview->setText(i18n(
"No images selected"));
271 enableButtonOK(
true);
273 if (d->_urls.count() == 1)
275 d->_url = d->_urls.first();
277 KIO::PreviewJob* thumbJob = KIO::filePreview(d->_url,
PREVIEW_SIZE);
278 connect( thumbJob, SIGNAL(gotPreview(
const KFileItem*,
const QPixmap&)),
279 SLOT(slotGotPreview(
const KFileItem* ,
const QPixmap&)));
283 d->_url = d->_urls.first();
284 d->_preview->setText(i18n(
"1 image selected",
"%n images selected", d->_urls.count()));
288void ImageDialog::slotGotPreview(
const KFileItem*,
const QPixmap& pix)
290 d->_preview->setPixmap(pix);
293void ImageDialog::slotHelp(
void )
295 KApplication::kApplication()->invokeHelp(
"",
"kipi-plugins");
298void ImageDialog::slotInitialShow()
300 ImageCollection current = d->_interface->currentAlbum();
302 QListViewItemIterator it( d->_albumList );
303 while ( it.current() )
305 AlbumLVI* lvi =
static_cast<AlbumLVI*
>( it.current() );
306 if ( lvi->_album == current )
308 d->_albumList->ensureItemVisible( lvi );
309 d->_albumList->setSelected( lvi,
true );
Definition imagecollection.h:53
KURL::List images() const
Definition imagecollection.cpp:95
static KURL getImageURL(QWidget *, Interface *)
Definition imagedialog.cpp:186
KURL::List urls() const
Definition imagedialog.cpp:181
KURL url() const
Definition imagedialog.cpp:176
~ImageDialog()
Definition imagedialog.cpp:171
static KURL::List getImageURLs(QWidget *, Interface *)
Definition imagedialog.cpp:199
ImageDialog(QWidget *, Interface *, bool singleSelection=false)
Definition imagedialog.cpp:94
Definition interface.h:64
const int PREVIEW_SIZE
Definition imagedialog.cpp:58
Definition batchprogressdialog.cpp:70
Definition imagedialog.cpp:64
const KIPI::ImageCollection & _album
Definition imagedialog.cpp:68
AlbumLVI(KListView *parent, const KIPI::ImageCollection &album)
Definition imagedialog.cpp:65
Definition imagedialog.cpp:82
QLabel * _preview
Definition imagedialog.cpp:88
KURL::List _urls
Definition imagedialog.cpp:84
KListView * _albumList
Definition imagedialog.cpp:86
KIPI::Interface * _interface
Definition imagedialog.cpp:85
QValueList< ImageCollection > _albums
Definition imagedialog.cpp:89
bool _singleSelection
Definition imagedialog.cpp:90
KListView * _imageList
Definition imagedialog.cpp:87
KURL _url
Definition imagedialog.cpp:83
Definition imagedialog.cpp:73
KURL _url
Definition imagedialog.cpp:77
ImageLVI(KListView *parent, const KURL &url)
Definition imagedialog.cpp:74