7
7
* Description : Albums folder view.
9
9
* Copyright (C) 2005-2006 by Joern Ahrens <joern.ahrens@kdemail.net>
10
* Copyright (C) 2006-2008 by Gilles Caulier <caulier dot gilles at gmail dot com>
11
12
* This program is free software; you can redistribute it
12
13
* and/or modify it under the terms of the GNU General
85
//-----------------------------------------------------------------------------
86
// AlbumFolderViewItem
87
//-----------------------------------------------------------------------------
89
85
class AlbumFolderViewItem : public FolderItem
93
90
AlbumFolderViewItem(QListView *parent, PAlbum *album);
97
94
AlbumFolderViewItem(QListViewItem* parent, const QString& name,
98
95
int year, int month);
100
PAlbum* getAlbum() const;
102
bool isGroupItem() const;
104
int compare(QListViewItem *i, int col, bool ascending) const;
97
PAlbum* album() const;
99
bool isGroupItem() const;
100
int compare(QListViewItem *i, int col, bool ascending) const;
102
void setOpen(bool o);
103
void setCount(int count);
114
117
AlbumFolderViewItem::AlbumFolderViewItem(QListView *parent, PAlbum *album)
125
129
setDragEnabled(true);
127
131
m_groupItem = false;
128
/* setText(0, album->title() + QString(" (%1)")
129
.arg(AlbumManager::instance()->albumDB()->getItemNamesInAlbum(album->id()).count()));*/
132
135
// special group item (collection/dates)
133
136
AlbumFolderViewItem::AlbumFolderViewItem(QListViewItem* parent, const QString& name,
134
137
int year, int month)
135
: FolderItem(parent, name, true),
136
m_album(0), m_year(year), m_month(month), m_groupItem(true)
138
setDragEnabled(false);
141
PAlbum* AlbumFolderViewItem::getAlbum() const
138
: FolderItem(parent, name, true)
147
void AlbumFolderViewItem::refresh()
149
if (!m_album) return;
151
if (AlbumSettings::instance()->getShowFolderTreeViewItemsCount() &&
152
dynamic_cast<AlbumFolderViewItem*>(parent()))
155
setText(0, QString("%1 (%2)").arg(m_album->title()).arg(m_count));
158
int countRecursive = m_count;
159
AlbumIterator it(m_album);
160
while ( it.current() )
162
AlbumFolderViewItem *item = (AlbumFolderViewItem*)it.current()->extraData(listView());
164
countRecursive += item->count();
167
setText(0, QString("%1 (%2)").arg(m_album->title()).arg(countRecursive));
172
setText(0, m_album->title());
176
void AlbumFolderViewItem::setOpen(bool o)
178
QListViewItem::setOpen(o);
182
PAlbum* AlbumFolderViewItem::album() const
192
//-----------------------------------------------------------------------------
193
// AlbumFolderViewPriv
194
//-----------------------------------------------------------------------------
232
void AlbumFolderViewItem::setCount(int count)
238
int AlbumFolderViewItem::count()
243
// -----------------------------------------------------------------------------
196
245
class AlbumFolderViewPriv
208
257
QValueList<AlbumFolderViewItem*> groupItems;
211
//-----------------------------------------------------------------------------
213
//-----------------------------------------------------------------------------
215
260
AlbumFolderView::AlbumFolderView(QWidget *parent)
216
261
: FolderView(parent, "AlbumFolderView")
242
287
connect(d->albumMan, SIGNAL(signalAlbumRenamed(Album*)),
243
288
this, SLOT(slotAlbumRenamed(Album*)));
290
connect(d->albumMan, SIGNAL(signalPAlbumsDirty(const QMap<int, int>&)),
291
this, SLOT(slotRefresh(const QMap<int, int>&)));
245
293
AlbumThumbnailLoader *loader = AlbumThumbnailLoader::instance();
247
295
connect(loader, SIGNAL(signalThumbnail(Album *, const QPixmap&)),
527
573
popmenu.insertItem(SmallIcon("albumfolder-new"), i18n("New Album..."), 10);
529
575
AlbumFolderViewItem *item = dynamic_cast<AlbumFolderViewItem*>(listitem);
530
if (item && !item->getAlbum())
576
if (item && !item->album())
532
578
// if collection/date return
1020
1066
// move dragItem below dropItem
1021
destAlbum = itemDrop->getAlbum();
1067
destAlbum = itemDrop->album();
1023
1069
KIO::Job* job = DIO::move(album->kurl(), destAlbum->kurl());
1024
1070
connect(job, SIGNAL(result(KIO::Job*)),
1183
1229
if(CameraItemListDrag::canDecode(e))
1185
Album *album = dynamic_cast<Album*>(itemDrop->getAlbum());
1231
Album *album = dynamic_cast<Album*>(itemDrop->album());
1186
1232
if (!album) return;
1188
1234
CameraUI *ui = dynamic_cast<CameraUI*>(e->source());
1310
1356
if(selectedItem())
1312
1358
AlbumFolderViewItem *folderItem = dynamic_cast<AlbumFolderViewItem*>(selectedItem());
1313
Album *album = folderItem->getAlbum();
1359
Album *album = folderItem->album();
1314
1360
if (album && album->type() == Album::PHYSICAL)
1316
1362
parent = dynamic_cast<PAlbum*>(album);
1585
void AlbumFolderView::refresh()
1587
QListViewItemIterator it(this);
1589
while (it.current())
1591
AlbumFolderViewItem* item = dynamic_cast<AlbumFolderViewItem*>(*it);
1598
void AlbumFolderView::slotRefresh(const QMap<int, int>& albumsStatMap)
1600
QListViewItemIterator it(this);
1602
while (it.current())
1604
AlbumFolderViewItem* item = dynamic_cast<AlbumFolderViewItem*>(*it);
1609
int id = item->id();
1610
QMap<int, int>::const_iterator it2 = albumsStatMap.find(id);
1611
if ( it2 != albumsStatMap.end() )
1612
item->setCount(it2.data());
1539
1621
} // namespace Digikam