~ubuntu-branches/ubuntu/precise/koffice/precise

« back to all changes in this revision

Viewing changes to krita/plugins/paintops/libpaintop/kis_paintop_options_widget.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Alessandro Ghersi
  • Date: 2010-10-27 17:52:57 UTC
  • mfrom: (0.12.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20101027175257-s04zqqk5bs8ckm9o
Tags: 1:2.2.83-0ubuntu1
* Merge with Debian git remaining changes:
 - Add build-deps on librcps-dev, opengtl-dev, libqtgtl-dev, freetds-dev,
   create-resources, libspnav-dev
 - Remove needless build-dep on libwv2-dev
 - koffice-libs recommends create-resources
 - krita recommends pstoedit
 - Keep our patches
* New upstream release 2.3 beta 3
  - Remove debian/patches fixed by upstream
  - Update install files

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
#include "kis_paintop_options_widget.h"
21
21
#include "kis_paintop_option.h"
22
22
 
 
23
#include <QHBoxLayout>
 
24
#include <QItemDelegate>
23
25
#include <QList>
 
26
#include <QListView>
24
27
#include <QLabel>
25
28
#include <QMap>
26
 
#include <QHBoxLayout>
 
29
#include <QStackedWidget>
27
30
#include <QVBoxLayout>
28
 
#include <QListWidget>
29
 
#include <QCheckBox>
30
 
#include <QStackedWidget>
 
31
 
31
32
#include <klocale.h>
 
33
#include <KCategorizedSortFilterProxyModel>
 
34
 
32
35
#include <kis_paintop_preset.h>
 
36
#include "kis_paintop_options_model.h"
 
37
#include <kis_categorized_item_delegate.h>
 
38
#include <qstyleditemdelegate.h>
33
39
 
34
40
class KisPaintOpOptionsWidget::Private
35
41
{
37
43
public:
38
44
 
39
45
    QList<KisPaintOpOption*> paintOpOptions;
40
 
    QMap<QListWidgetItem*, KisPaintOpOption*> checkBoxMap;
41
 
    QListWidget * optionsList;
 
46
    QListView* optionsList;
 
47
    KisPaintOpOptionsModel* model;
 
48
    KCategorizedSortFilterProxyModel* proxyModel;
42
49
    QStackedWidget * optionsStack;
43
50
};
44
51
 
48
55
{
49
56
    setObjectName("KisPaintOpPresetsWidget");
50
57
    QHBoxLayout * layout = new QHBoxLayout(this);
51
 
    m_d->optionsList = new QListWidget(this);
 
58
    m_d->optionsList = new QListView(this);
 
59
    m_d->model = new KisPaintOpOptionsModel;
 
60
    m_d->proxyModel = new KCategorizedSortFilterProxyModel;
 
61
    m_d->proxyModel->setSourceModel(m_d->model);
 
62
    m_d->proxyModel->setCategorizedModel(true);
 
63
    m_d->proxyModel->setSortRole(KisPaintOpOptionsModel::SortingRole);
 
64
    m_d->optionsList->setModel(m_d->proxyModel);
 
65
    m_d->optionsList->setItemDelegate(new KisCategorizedItemDelegate(new QStyledItemDelegate));
52
66
    m_d->optionsList->setFixedWidth(128);
53
67
    QSizePolicy policy =  QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred);
54
68
    policy.setHorizontalStretch(0);
62
76
    layout->addWidget(m_d->optionsStack);
63
77
 
64
78
    connect(m_d->optionsList,
65
 
            SIGNAL(currentItemChanged(QListWidgetItem *, QListWidgetItem *)),
66
 
            this, SLOT(changePage(QListWidgetItem *, QListWidgetItem*)));
67
 
            
68
 
    connect(m_d->optionsList, SIGNAL(itemChanged(QListWidgetItem*)), SLOT(itemChanged(QListWidgetItem*)));
 
79
            SIGNAL(activated(const QModelIndex&)),
 
80
            this, SLOT(changePage(const QModelIndex&)));
 
81
    connect(m_d->optionsList,
 
82
            SIGNAL(clicked(QModelIndex)),
 
83
            this, SLOT(changePage(const QModelIndex&)));
69
84
}
70
85
 
71
86
 
72
87
KisPaintOpOptionsWidget::~KisPaintOpOptionsWidget()
73
88
{
74
89
    qDeleteAll(m_d->paintOpOptions);
 
90
    delete m_d->model;
75
91
    delete m_d;
76
92
}
77
93
 
78
94
void KisPaintOpOptionsWidget::addPaintOpOption(KisPaintOpOption * option)
79
95
{
80
96
    if (!option->configurationPage()) return;
81
 
 
82
 
    m_d->paintOpOptions << option;
 
97
    
 
98
    m_d->model->addPaintOpOption(option, m_d->optionsStack->count());
83
99
 
84
100
    connect(option, SIGNAL(sigSettingChanged()), SIGNAL(sigConfigurationItemChanged()));
85
101
 
86
102
    m_d->optionsStack->addWidget(option->configurationPage());
87
 
        
88
 
    QListWidgetItem * item = new QListWidgetItem(m_d->optionsList);
89
 
    item->setText(option->label());
90
 
    Qt::ItemFlags flags = item->flags();
91
 
    flags = Qt::ItemIsSelectable | Qt::ItemIsEnabled;
92
 
    if (option->isCheckable()) {
93
 
 
94
 
        flags |= Qt::ItemIsUserCheckable;
95
 
        item->setCheckState((option->isChecked()) ? Qt::Checked : Qt::Unchecked);
96
 
        m_d->checkBoxMap[item] = option;
97
 
    }
98
 
    item->setFlags(flags);
 
103
    m_d->paintOpOptions << option;
 
104
    m_d->proxyModel->sort(0);
99
105
}
100
106
 
101
107
void KisPaintOpOptionsWidget::setConfiguration(const KisPropertiesConfiguration * config)
102
108
{
103
109
    Q_ASSERT(!config->getString("paintop").isEmpty());
 
110
    m_d->model->reset();
104
111
    foreach(KisPaintOpOption* option, m_d->paintOpOptions) {
105
112
        option->readOptionSetting(config);
106
113
    }
107
 
    foreach(QListWidgetItem* checkableItem, m_d->checkBoxMap.keys()) {
108
 
        checkableItem->setCheckState((m_d->checkBoxMap[checkableItem]->isChecked()) ? Qt::Checked : Qt::Unchecked);
109
 
    }
110
114
}
111
115
 
112
116
void KisPaintOpOptionsWidget::writeConfiguration(KisPropertiesConfiguration *config) const
123
127
    }
124
128
}
125
129
 
126
 
void KisPaintOpOptionsWidget::changePage(QListWidgetItem *current, QListWidgetItem *previous)
127
 
{
128
 
    Q_UNUSED(previous);
129
 
    m_d->optionsStack->setCurrentIndex(m_d->optionsList->row(current));
130
 
}
131
 
 
132
 
void KisPaintOpOptionsWidget::itemChanged(QListWidgetItem* item)
133
 
{
134
 
    if(m_d->checkBoxMap.contains(item)) {
135
 
        m_d->checkBoxMap[item]->setChecked(item->checkState() == Qt::Checked);
136
 
        emit sigConfigurationItemChanged();
137
 
    }
 
130
void KisPaintOpOptionsWidget::changePage(const QModelIndex& index)
 
131
{
 
132
    m_d->optionsStack->setCurrentIndex( m_d->proxyModel->data(index, KisPaintOpOptionsModel::WidgetIndexRole).toInt());
 
133
    emit sigConfigurationItemChanged();
138
134
}
139
135
 
140
136
#include "kis_paintop_options_widget.moc"