diff options
Diffstat (limited to 'src/utilities/cameragui/camerafolderview.cpp')
-rw-r--r-- | src/utilities/cameragui/camerafolderview.cpp | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/src/utilities/cameragui/camerafolderview.cpp b/src/utilities/cameragui/camerafolderview.cpp new file mode 100644 index 00000000..877c4b51 --- /dev/null +++ b/src/utilities/cameragui/camerafolderview.cpp @@ -0,0 +1,169 @@ +/* ============================================================ + * + * This file is a part of digiKam project + * http://www.digikam.org + * + * Date : 2003-01-23 + * Description : A widget to display a list of camera folders. + * + * Copyright (C) 2003-2005 by Renchi Raju <renchi@pooh.tam.uiuc.edu> + * Copyright (C) 2006-2008 by Gilles Caulier <caulier dot gilles at gmail dot com> + * + * This program is free software; you can redistribute it + * and/or modify it under the terms of the GNU General + * Public License as published bythe 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. + * + * ============================================================ */ + +// KDE includes. + +#include <tdelocale.h> +#include <kiconloader.h> + +// Local includes. + +#include "ddebug.h" +#include "camerafolderitem.h" +#include "camerafolderview.h" +#include "camerafolderview.moc" + +namespace Digikam +{ + +class CameraFolderViewPriv +{ +public: + + CameraFolderViewPriv() + { + virtualFolder = 0; + rootFolder = 0; + cameraName = TQString("Camera"); + } + + TQString cameraName; + + CameraFolderItem *virtualFolder; + CameraFolderItem *rootFolder; +}; + +CameraFolderView::CameraFolderView(TQWidget* parent) + : TQListView(parent) +{ + d = new CameraFolderViewPriv; + + addColumn(i18n("Camera Folders")); + setColumnWidthMode( 0, TQListView::Maximum ); + setResizeMode( TQListView::AllColumns ); + setSelectionMode(TQListView::Single); + + connect(this, TQ_SIGNAL(currentChanged(TQListViewItem*)), + this, TQ_SLOT(slotCurrentChanged(TQListViewItem*))); + + connect(this, TQ_SIGNAL(clicked(TQListViewItem*)), + this, TQ_SLOT(slotCurrentChanged(TQListViewItem*))); +} + +CameraFolderView::~CameraFolderView() +{ + delete d; +} + +void CameraFolderView::addVirtualFolder(const TQString& name, const TQPixmap& pixmap) +{ + d->cameraName = name; + d->virtualFolder = new CameraFolderItem(this, d->cameraName, pixmap); + d->virtualFolder->setOpen(true); + d->virtualFolder->setSelected(false); + d->virtualFolder->setSelectable(false); +} + +void CameraFolderView::addRootFolder(const TQString& folder, int nbItems, const TQPixmap& pixmap) +{ + d->rootFolder = new CameraFolderItem(d->virtualFolder, folder, folder, pixmap); + d->rootFolder->setOpen(true); + d->rootFolder->setCount(nbItems); +} + +CameraFolderItem* CameraFolderView::addFolder(const TQString& folder, const TQString& subFolder, + int nbItems, const TQPixmap& pixmap) +{ + CameraFolderItem *parentItem = findFolder(folder); + + DDebug() << "CameraFolderView: Adding Subfolder " << subFolder + << " of folder " << folder << endl; + + if (parentItem) + { + TQString path(folder); + + if (!folder.endsWith("/")) + path += '/'; + + path += subFolder; + CameraFolderItem* item = new CameraFolderItem(parentItem, subFolder, path, pixmap); + + DDebug() << "CameraFolderView: Added ViewItem with path " + << item->folderPath() << endl; + + item->setCount(nbItems); + item->setOpen(true); + return item; + } + else + { + DWarning() << "CameraFolderView: Couldn't find parent for subFolder " + << subFolder << " of folder " << folder << endl; + return 0; + } +} + +CameraFolderItem* CameraFolderView::findFolder(const TQString& folderPath) +{ + + TQListViewItemIterator it(this); + for ( ; it.current(); ++it) + { + CameraFolderItem* item = static_cast<CameraFolderItem*>(it.current()); + + if (item->folderPath() == folderPath) + return item; + } + + return 0; +} + +void CameraFolderView::slotCurrentChanged(TQListViewItem* item) +{ + if (!item) + emit signalFolderChanged(0); + else + emit signalFolderChanged(static_cast<CameraFolderItem *>(item)); +} + +CameraFolderItem* CameraFolderView::virtualFolder() +{ + return d->virtualFolder; +} + +CameraFolderItem* CameraFolderView::rootFolder() +{ + return d->rootFolder; +} + +void CameraFolderView::clear() +{ + TQListView::clear(); + d->virtualFolder = 0; + d->rootFolder = 0; + emit signalCleared(); +} + +} // namespace Digikam |