You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
170 lines
4.4 KiB
170 lines
4.4 KiB
/* ============================================================
|
|
*
|
|
* 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 <klocale.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, TQT_SIGNAL(currentChanged(TQListViewItem*)),
|
|
this, TQT_SLOT(slotCurrentChanged(TQListViewItem*)));
|
|
|
|
connect(this, TQT_SIGNAL(clicked(TQListViewItem*)),
|
|
this, TQT_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
|