/* ============================================================ * * This file is a part of digiKam project * http://www.digikam.org * * Date : 2008-04-07 * Description : Raw camera list dialog * * Copyright (C) 2008 by Gilles Caulier * * This program is free software; you can redistribute it * and/or modify it under the terms of the GNU General * Public License as published by the 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. * * ============================================================ */ // TQt includes. #include #include #include #include #include #include // KDE includes. #include #include #include #include // LibKDcraw includes. #include #include #if KDCRAW_VERSION < 0x000106 #include #endif // Local includes. #include "searchtextbar.h" #include "rawcameradlg.h" #include "rawcameradlg.moc" namespace Digikam { class RawCameraDlgPriv { public: RawCameraDlgPriv() { listView = 0; searchBar = 0; } TQListView *listView; SearchTextBar *searchBar; }; RawCameraDlg::RawCameraDlg(TQWidget *parent) : KDialogBase(parent, 0, true, TQString(), Help|Ok, Ok, true) { setHelp("digitalstillcamera.anchor", "digikam"); setCaption(i18n("List of supported RAW cameras")); d = new RawCameraDlgPriv; TQWidget *page = makeMainWidget(); TQGridLayout* grid = new TQGridLayout(page, 2, 2, 0, spacingHint()); #if KDCRAW_VERSION < 0x000106 TQStringList list = KDcrawIface::DcrawBinary::instance()->supportedCamera(); TQString dcrawVer = KDcrawIface::DcrawBinary::instance()->internalVersion(); #else TQStringList list = KDcrawIface::KDcraw::supportedCamera(); TQString librawVer = KDcrawIface::KDcraw::librawVersion(); #endif TQString KDcrawVer = KDcrawIface::KDcraw::version(); // -------------------------------------------------------- TQLabel *logo = new TQLabel(page); KIconLoader* iconLoader = KApplication::kApplication()->iconLoader(); if (KApplication::kApplication()->aboutData()->appName() == TQString("digikam")) logo->setPixmap(iconLoader->loadIcon("digikam", KIcon::NoGroup, 96, KIcon::DefaultState, 0, true)); else logo->setPixmap(iconLoader->loadIcon("showfoto", KIcon::NoGroup, 96, KIcon::DefaultState, 0, true)); // -------------------------------------------------------- TQLabel *header = new TQLabel(page); #if KDCRAW_VERSION < 0x000106 header->setText(i18n("

Using KDcraw library version %1" "

Using Dcraw program version %2" "

%3 models in the list") .tqarg(KDcrawVer).tqarg(dcrawVer).tqarg(list.count())); #else header->setText(i18n("

Using KDcraw library version %1" "

Using LibRaw version %2" "

%3 models in the list") .tqarg(KDcrawVer).tqarg(librawVer).tqarg(list.count())); #endif // -------------------------------------------------------- d->searchBar = new SearchTextBar(page, "RawCameraDlgSearchBar"); d->listView = new TQListView(page); d->listView->addColumn("Camera Model"); // Header is hiden. No i18n here. d->listView->setSorting(1); d->listView->header()->hide(); d->listView->setResizeMode(TQListView::LastColumn); for (TQStringList::Iterator it = list.begin() ; it != list.end() ; ++it) new TQListViewItem(d->listView, *it); // -------------------------------------------------------- grid->addMultiCellWidget(logo, 0, 0, 0, 0); grid->addMultiCellWidget(header, 0, 0, 1, 2); grid->addMultiCellWidget(d->listView, 1, 1, 0, 2); grid->addMultiCellWidget(d->searchBar, 2, 2, 0, 2); grid->setColStretch(1, 10); grid->setRowStretch(1, 10); // -------------------------------------------------------- connect(d->searchBar, TQT_SIGNAL(signalTextChanged(const TQString&)), this, TQT_SLOT(slotSearchTextChanged(const TQString&))); resize(500, 500); } RawCameraDlg::~RawCameraDlg() { delete d; } void RawCameraDlg::slotSearchTextChanged(const TQString& filter) { bool query = false; TQString search = filter.lower(); TQListViewItemIterator it(d->listView); for ( ; it.current(); ++it ) { TQListViewItem *item = it.current(); if (item->text(0).lower().contains(search)) { query = true; item->setVisible(true); } else { item->setVisible(false); } } d->searchBar->slotSearchResult(query); } } // NameSpace Digikam