diff options
| author | Michele Calgaro <michele.calgaro@yahoo.it> | 2024-11-22 18:41:30 +0900 | 
|---|---|---|
| committer | Michele Calgaro <michele.calgaro@yahoo.it> | 2024-11-22 20:55:03 +0900 | 
| commit | 5bed6e4a4c916a97f8fe4d1b07f7eecf4d733b90 (patch) | |
| tree | f89cc49efc9ca1d0e1579ecb079ee7e7088ff8c8 /src/utilities/setup/setupcollections.cpp | |
| parent | 0bfbf616d9c1fd7abb1bd02732389ab35e5f8771 (diff) | |
| download | digikam-5bed6e4a.tar.gz digikam-5bed6e4a.zip | |
Rename 'digikam' folder to 'src'
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
(cherry picked from commit ee0d99607c14cb63d3ebdb3a970b508949fa8219)
Diffstat (limited to 'src/utilities/setup/setupcollections.cpp')
| -rw-r--r-- | src/utilities/setup/setupcollections.cpp | 218 | 
1 files changed, 218 insertions, 0 deletions
| diff --git a/src/utilities/setup/setupcollections.cpp b/src/utilities/setup/setupcollections.cpp new file mode 100644 index 00000000..10a25c31 --- /dev/null +++ b/src/utilities/setup/setupcollections.cpp @@ -0,0 +1,218 @@ +/* ============================================================ + * + * This file is a part of digiKam project + * http://www.digikam.org + * + * Date        : 2004-01-02 + * Description : collection setup tab. + *  + * Copyright (C) 2004-2007 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 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 <tqlayout.h> +#include <tqvbuttongroup.h> +#include <tqvgroupbox.h> +#include <tqhgroupbox.h> +#include <tqgroupbox.h> +#include <tqradiobutton.h> +#include <tqcheckbox.h> +#include <tqlabel.h> +#include <tqlineedit.h> +#include <tqpushbutton.h> +#include <tqdir.h> +#include <tqwhatsthis.h> + +// KDE includes. + +#include <tdelistbox.h> +#include <tdelocale.h> +#include <kdialog.h> +#include <tdefiledialog.h> +#include <kurl.h> +#include <tdemessagebox.h> +#include <kiconloader.h> +#include <tdeversion.h> + +#if KDE_IS_VERSION(3,2,0) +#include <kinputdialog.h> +#else +#include <klineeditdlg.h> +#endif + +// Local includes. + +#include "thumbnailsize.h" +#include "albumsettings.h" +#include "setupcollections.h" +#include "setupcollections.moc" + +namespace Digikam +{ + +class SetupCollectionsPriv +{ +public: + +    SetupCollectionsPriv() +    { +        albumCollectionBox  = 0; +        addCollectionButton = 0; +        delCollectionButton = 0; +    } +    +    TQListBox     *albumCollectionBox; + +    TQPushButton  *addCollectionButton; +    TQPushButton  *delCollectionButton; +}; + +SetupCollections::SetupCollections(TQWidget* parent ) +                : TQWidget(parent) +{ +    d = new SetupCollectionsPriv; + +    TQVBoxLayout *mainLayout            = new TQVBoxLayout(parent); +    TQGridLayout *collectionGroupLayout = new TQGridLayout( this, 2, 5, 0, KDialog::spacingHint() ); + +    // -------------------------------------------------------- +     +    d->albumCollectionBox = new TDEListBox(this); +    TQWhatsThis::add( d->albumCollectionBox, i18n("<p>You can add or remove Album " +                                                 "collection types here to improve how " +                                                 "your Albums are sorted in digiKam.")); +     +    d->albumCollectionBox->setVScrollBarMode(TQScrollView::AlwaysOn); +     +    d->addCollectionButton = new TQPushButton( i18n("&Add..."), this); +    d->delCollectionButton = new TQPushButton( i18n("&Delete"), this); + +    d->addCollectionButton->setIconSet(SmallIcon("add")); +    d->delCollectionButton->setIconSet(SmallIcon("remove")); +    d->delCollectionButton->setEnabled(false); +     +    TQSpacerItem* spacer = new TQSpacerItem( 20, 20, TQSizePolicy::Minimum, TQSizePolicy::Expanding ); + +    collectionGroupLayout->setAlignment( TQt::AlignTop ); +    collectionGroupLayout->addMultiCellWidget( d->albumCollectionBox, 0, 4, 0, 0 ); +    collectionGroupLayout->addWidget( d->addCollectionButton, 0, 1); +    collectionGroupLayout->addWidget( d->delCollectionButton, 1, 1); +    collectionGroupLayout->addItem( spacer, 4, 1 ); +     +    // -------------------------------------------------------- +     +    connect(d->albumCollectionBox, TQ_SIGNAL(selectionChanged()), +            this, TQ_SLOT(slotCollectionSelectionChanged())); +     +    connect(d->addCollectionButton, TQ_SIGNAL(clicked()), +            this, TQ_SLOT(slotAddCollection())); +     +    connect(d->delCollectionButton, TQ_SIGNAL(clicked()), +            this, TQ_SLOT(slotDelCollection())); +     +    // -------------------------------------------------------- +     +    readSettings(); +    adjustSize(); +    mainLayout->addWidget(this); +} + +SetupCollections::~SetupCollections() +{ +    delete d; +} + +void SetupCollections::applySettings() +{ +    AlbumSettings* settings = AlbumSettings::instance(); + +    if (!settings) return; + +    TQStringList collectionList; + +    for (TQListBoxItem *item = d->albumCollectionBox->firstItem(); +         item; item = item->next()) +    { +        collectionList.append(item->text()); +    } + +    settings->setAlbumCollectionNames(collectionList); + +    settings->saveSettings(); +} + +void SetupCollections::readSettings() +{ +    AlbumSettings* settings = AlbumSettings::instance(); + +    if (!settings) return; + +    d->albumCollectionBox->insertStringList(settings->getAlbumCollectionNames()); +} + +void SetupCollections::slotCollectionSelectionChanged() +{ +    if (d->albumCollectionBox->currentItem() != -1) +        d->delCollectionButton->setEnabled(true); +    else +        d->delCollectionButton->setEnabled(false); +} + +void SetupCollections::slotAddCollection() +{ +    bool ok; + +#if KDE_IS_VERSION(3,2,0) +    TQString newCollection = +        KInputDialog::getText(i18n("New Collection Name"), +                              i18n("Enter new collection name:"), +                              TQString(), &ok, this); +#else +    TQString newCollection = +        KLineEditDlg::getText(i18n("New Collection Name"), +                              i18n("Enter new collection name:"), +                              TQString(), &ok, this); +#endif + +    if (!ok) return; + +    bool found = false; +    for (TQListBoxItem *item = d->albumCollectionBox->firstItem(); +         item; item = item->next())  +    { +        if (newCollection == item->text())  +        { +            found = true; +            break; +        } +    } + +    if (!found) +        d->albumCollectionBox->insertItem(newCollection); +} + +void SetupCollections::slotDelCollection() +{ +    int index = d->albumCollectionBox->currentItem(); +    if (index == -1) +        return; + +    TQListBoxItem* item = d->albumCollectionBox->item(index); +    if (!item) return; +    delete item; +} + +}  // namespace Digikam | 
