File indexing completed on 2024-06-09 04:25:04
0001 /* 0002 * SPDX-FileCopyrightText: 2004 Adrian Page <adrian@pagenet.plus.com> 0003 * SPDX-FileCopyrightText: 2011 Srikanth Tiyyagura <srikanth.tulasiram@gmail.com> 0004 * 0005 * SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #include "widgets/kis_pattern_chooser.h" 0009 0010 #include <math.h> 0011 #include <QLabel> 0012 #include <QLayout> 0013 #include <QVBoxLayout> 0014 #include <QResizeEvent> 0015 #include <QShowEvent> 0016 0017 #include <klocalizedstring.h> 0018 #include <KisResourceItemChooser.h> 0019 #include <KoResourceServerProvider.h> 0020 #include <KisTagFilterResourceProxyModel.h> 0021 0022 #include "kis_signals_blocker.h" 0023 0024 #include "kis_global.h" 0025 #include <kis_config.h> 0026 #include <resources/KoPattern.h> 0027 0028 #include <ksqueezedtextlabel.h> 0029 0030 KisPatternChooser::KisPatternChooser(QWidget *parent) 0031 : QFrame(parent) 0032 { 0033 m_lblName = new KSqueezedTextLabel(this); 0034 m_lblName->setTextElideMode(Qt::ElideMiddle); 0035 m_lblName->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Fixed); 0036 0037 m_itemChooser = new KisResourceItemChooser(ResourceType::Patterns, true, this); 0038 m_itemChooser->setPreviewTiled(true); 0039 m_itemChooser->setPreviewOrientation(Qt::Horizontal); 0040 m_itemChooser->showTaggingBar(true); 0041 m_itemChooser->setSynced(true); 0042 0043 connect(m_itemChooser, SIGNAL(resourceSelected(KoResourceSP )), 0044 this, SLOT(update(KoResourceSP ))); 0045 0046 connect(m_itemChooser, SIGNAL(resourceSelected(KoResourceSP )), 0047 this, SIGNAL(resourceSelected(KoResourceSP ))); 0048 0049 QVBoxLayout *mainLayout = new QVBoxLayout(this); 0050 mainLayout->setSizeConstraint(QLayout::SetMinAndMaxSize); 0051 mainLayout->setMargin(0); 0052 mainLayout->addWidget(m_lblName); 0053 mainLayout->addWidget(m_itemChooser, 10); 0054 } 0055 0056 KisPatternChooser::~KisPatternChooser() 0057 { 0058 } 0059 0060 KoResourceSP KisPatternChooser::currentResource(bool includeHidden) 0061 { 0062 KoResourceSP result = m_itemChooser->currentResource(includeHidden); 0063 0064 if (!result && includeHidden) { 0065 KoResourceServer<KoPattern> * rserver = KoResourceServerProvider::instance()->patternServer(); 0066 if (rserver->resourceCount() > 0) { 0067 KisSignalsBlocker blocker(m_itemChooser); 0068 m_itemChooser->setCurrentResource(rserver->firstResource()); 0069 result = rserver->firstResource(); 0070 } 0071 } 0072 return result; 0073 } 0074 0075 void KisPatternChooser::setCurrentPattern(KoResourceSP resource) 0076 { 0077 m_itemChooser->tagFilterModel()->sort(Qt::DisplayRole); 0078 m_itemChooser->setCurrentResource(resource); 0079 update(currentResource()); 0080 } 0081 0082 void KisPatternChooser::setCurrentItem(int row) 0083 { 0084 m_itemChooser->setCurrentItem(row); 0085 if (currentResource()) { 0086 update(currentResource()); 0087 } 0088 } 0089 0090 void KisPatternChooser::setPreviewOrientation(Qt::Orientation orientation) 0091 { 0092 m_itemChooser->setPreviewOrientation(orientation); 0093 } 0094 0095 void KisPatternChooser::update(KoResourceSP resource) 0096 { 0097 if (!resource) return; 0098 0099 KoPatternSP pattern = resource.staticCast<KoPattern>(); 0100 m_lblName->setText(QString("%1 (%2 x %3)").arg(i18n(pattern->name().toUtf8().data())).arg(pattern->width()).arg(pattern->height())); 0101 } 0102 0103 void KisPatternChooser::setGrayscalePreview(bool grayscale) 0104 { 0105 m_itemChooser->setGrayscalePreview(grayscale); 0106 } 0107 0108