8
8
* to upload new items using digiKam album folder views
10
10
* Copyright (C) 2008 by Gilles Caulier <caulier dot gilles at gmail dot com>
11
* Copyright (C) 2009 by Luka Renko <lure at kubuntu dot org>
12
13
* This program is free software; you can redistribute it
13
14
* and/or modify it under the terms of the GNU General
44
48
#include "albummanager.h"
45
49
#include "albumthumbnailloader.h"
46
50
#include "treefolderitem.h"
51
#include "collectionmanager.h"
47
52
#include "kipiinterface.h"
48
53
#include "kipiimagecollection.h"
82
90
d->searchBar = new SearchTextBar(this, "KipiUploadWidgetSearchBar");
84
QVBoxLayout *vlay = new QVBoxLayout(this);
85
vlay->addWidget(d->albumsView, 10);
86
vlay->addWidget(d->searchBar);
88
vlay->setSpacing(KDialog::spacingHint());
92
d->newAlbumBtn = new KPushButton(
93
KGuiItem(i18n("&New Album"), "albumfolder-new",
94
i18n("Create new album")), this);
96
QGridLayout *grid = new QGridLayout(this);
97
grid->addWidget(d->albumsView, 0, 0, 10, 5);
98
grid->addWidget(d->searchBar, 10, 0, 1, 4);
99
grid->addWidget(d->newAlbumBtn, 10, 4, 1, 1);
101
grid->setSpacing(KDialog::spacingHint());
90
103
// ------------------------------------------------------------------------------------
94
107
// ------------------------------------------------------------------------------------
109
connect(AlbumManager::instance(), SIGNAL(signalAlbumAdded(Album*)),
110
this, SLOT(slotAlbumAdded(Album*)));
96
112
connect(d->albumsView, SIGNAL(itemSelectionChanged()),
97
113
this, SIGNAL(selectionChanged()));
99
115
connect(d->searchBar, SIGNAL(signalSearchTextSettings(const SearchTextSettings&)),
100
116
this, SLOT(slotSearchTextChanged(const SearchTextSettings&)));
118
connect(d->newAlbumBtn, SIGNAL(clicked()),
119
this, SLOT(slotNewAlbum()));
103
122
KipiUploadWidget::~KipiUploadWidget()
230
249
d->searchBar->slotSearchResult(atleastOneMatch);
252
void KipiUploadWidget::slotNewAlbum()
254
QTreeWidgetItem* item = d->albumsView->currentItem();
256
item = d->albumsView->topLevelItem(0);
261
TreeAlbumItem* viewItem = dynamic_cast<TreeAlbumItem*>(item);
265
PAlbum* album = dynamic_cast<PAlbum*>(viewItem->album());
270
QString newAlbumName = KInputDialog::getText(i18n("New Album Name"),
271
i18n("Creating new album in '%1'\n"
274
QString(), &ok, this);
282
// if we create an album under root, need to supply the album root path.
283
// TODO: Let user choose an album root
284
newAlbum = AlbumManager::instance()->createPAlbum(CollectionManager::instance()->oneAlbumRootPath(),
285
newAlbumName, QString(), QDate::currentDate(), QString(), errMsg);
289
newAlbum = AlbumManager::instance()->createPAlbum(album, newAlbumName, QString(),
290
QDate::currentDate(), QString(), errMsg);
295
KMessageBox::error(this, errMsg);
299
TreeAlbumItem* newItem = (TreeAlbumItem*)newAlbum->extraData(d->albumsView);
302
d->albumsView->scrollToItem(newItem);
303
d->albumsView->setCurrentItem(newItem);
304
newItem->setSelected(true);
308
void KipiUploadWidget::slotAlbumAdded(Album* album)
310
if (!album || album->type() != Album::PHYSICAL)
313
TreeAlbumItem* parentItem = (TreeAlbumItem*)(album->parent()->extraData(d->albumsView));
317
kWarning(50003) << "Failed to find parent for Album "
318
<< album->title() << endl;
322
TreeAlbumItem* item = new TreeAlbumItem(parentItem, album);
323
PAlbum* palbum = dynamic_cast<PAlbum*>(album);
325
item->setIcon(0, AlbumThumbnailLoader::instance()->getStandardAlbumIcon(palbum));
233
328
} // namespace Digikam