121 d->tagFilterProxyModel->sort(Qt::DisplayRole);
126 d->viewModeButton->setToolTip(i18n(
"Display settings"));
127 d->viewModeButton->setVisible(
false);
128 d->viewModeButton->setArrowVisible(
false);
129 d->viewModeButton->setAutoRaise(
true);
133 d->storagePopupButton->setToolTip(i18n(
"Storage Resources"));
134 d->storagePopupButton->setAutoRaise(
true);
135 d->storagePopupButton->setArrowVisible(
false);
139 d->view->setObjectName(
"ResourceItemview");
140 d->view->setStrictSelectionMode(
true);
143 d->view->setFixedToolTipThumbnailSize(QSize(256, 64));
144 d->view->setToolTipShouldRenderCheckers(
true);
147 d->view->setFixedToolTipThumbnailSize(QSize(128, 128));
150 d->view->setToolTipShouldRenderCheckers(
false);
151 d->view->setFixedToolTipThumbnailSize(QSize(256, 256));
155 d->view->setSelectionMode(QAbstractItemView::SingleSelection);
156 d->view->viewport()->installEventFilter(
this);
157 d->view->setModel(
d->tagFilterProxyModel);
161 connect(
d->view, SIGNAL(currentResourceChanged(QModelIndex)),
this, SLOT(
activate(QModelIndex)));
162 connect(
d->view, SIGNAL(currentResourceClicked(QModelIndex)),
this, SLOT(
clicked(QModelIndex)));
164 connect(
d->view, SIGNAL(sigSizeChanged()),
this, SLOT(
updateView()));
167 d->resourcesSplitter =
new QSplitter(
this);
168 d->resourcesSplitter->addWidget(
d->view);
169 d->resourcesSplitter->setStretchFactor(0, 1);
173 d->previewScroller =
new QScrollArea(
this);
174 d->previewScroller->setWidgetResizable(
true);
175 d->previewScroller->setBackgroundRole(QPalette::Dark);
176 d->previewScroller->setVisible(
true);
177 d->previewScroller->setAlignment(Qt::AlignCenter);
178 d->previewLabel =
new QLabel(
this);
179 d->previewScroller->setWidget(
d->previewLabel);
180 d->resourcesSplitter->addWidget(
d->previewScroller);
182 if (
d->resourcesSplitter->count() == 2) {
183 d->resourcesSplitter->setSizes(
QList<int>() << 280 << 160);
193 d->importButton =
new QToolButton(
this);
194 d->importButton->setToolTip(i18nc(
"@info:tooltip",
"Import resource"));
195 d->importButton->setAutoRaise(
true);
196 d->importButton->setEnabled(
true);
198 d->deleteButton =
new QToolButton(
this);
199 d->deleteButton->setToolTip(i18nc(
"@info:tooltip",
"Delete resource"));
200 d->deleteButton->setEnabled(
false);
201 d->deleteButton->setAutoRaise(
true);
203 d->buttonGroup =
new QButtonGroup(
this);
204 d->buttonGroup->setExclusive(
false);
209 d->importExportBtns =
new QFrame(
this);
210 QHBoxLayout* importExportLayout =
new QHBoxLayout(
d->importExportBtns);
211 importExportLayout->setAlignment(Qt::AlignmentFlag::AlignLeft);
212 importExportLayout->setContentsMargins(0, 0, 0, 0);
213 importExportLayout->addWidget(
d->importButton);
214 importExportLayout->addWidget(
d->deleteButton);
216 auto removePadding = [](QLayout*
layout) {
217 layout->setContentsMargins(0, 0, 0, 0);
222 QGridLayout* thisLayout =
new QGridLayout(
this);
223 thisLayout->setObjectName(
"ResourceChooser this");
224 removePadding(thisLayout);
229 d->horzSplitter =
new QSplitter(
this);
230 d->horzSplitter->setOrientation(Qt::Orientation::Horizontal);
234 d->left =
new QFrame(
this);
235 QSizePolicy newPolicy =
d->left->sizePolicy();
236 newPolicy.setHorizontalStretch(2);
237 d->left->setSizePolicy(newPolicy);
238 QHBoxLayout* leftLayout =
new QHBoxLayout(
d->left);
239 leftLayout->setObjectName(
"ResourceChooser left");
241 d->right =
new QFrame(
this);
242 newPolicy =
d->right->sizePolicy();
243 newPolicy.setHorizontalStretch(0);
244 d->right->setSizePolicy(newPolicy);
245 QHBoxLayout* rightLayout =
new QHBoxLayout(
d->right);
246 rightLayout->setObjectName(
"ResourceChooser right");
249 d->right2Rows =
new QFrame(
this);
250 newPolicy =
d->right2Rows->sizePolicy();
251 newPolicy.setHorizontalStretch(0);
252 d->right2Rows->setSizePolicy(newPolicy);
253 QVBoxLayout* rightLayout2 =
new QVBoxLayout(
d->right2Rows);
254 rightLayout2->setObjectName(
"ResourceChooser right 2 rows");
256 d->top =
new QHBoxLayout();
257 d->bot =
new QHBoxLayout();
258 rightLayout2->addLayout(
d->top);
259 rightLayout2->addLayout(
d->bot);
262 removePadding(leftLayout);
263 removePadding(rightLayout);
264 removePadding(rightLayout2);
265 removePadding(
d->top);
266 removePadding(
d->bot);
269 d->scroll_left =
new QToolButton(
this);
272 d->scroll_right =
new QToolButton(
this);
277 d->scroll_left->hide();
278 d->scroll_right->hide();
281 d->right2Rows->hide();
282 d->horzSplitter->hide();
547 if (!
d->usePreview)
return;
549 if (!idx.isValid()) {
550 d->previewLabel->setPixmap(QPixmap());
556 if (image.format() != QImage::Format_RGB32 &&
557 image.format() != QImage::Format_ARGB32 &&
558 image.format() != QImage::Format_ARGB32_Premultiplied) {
560 image.convertTo(QImage::Format_ARGB32_Premultiplied);
563 if (
d->tiledPreview) {
564 int width =
d->previewScroller->width() * 4 * devicePixelRatioF();
565 int height =
d->previewScroller->height() * 4 * devicePixelRatioF();
566 QImage img(width, height, image.format());
568 gc.fillRect(img.rect(), Qt::white);
569 gc.setPen(Qt::NoPen);
570 gc.setBrush(QBrush(image));
571 gc.drawRect(img.rect());
576 if (
d->grayscalePreview && !image.isGrayscale()) {
577 QRgb *pixel =
reinterpret_cast<QRgb *
>(image.bits());
578 for (
int row = 0; row < image.height(); ++row) {
579 for (
int col = 0; col < image.width(); ++col) {
580 const QRgb currentPixel = pixel[row * image.width() + col];
581 const int red = qRed(currentPixel);
582 const int green = qGreen(currentPixel);
583 const int blue = qBlue(currentPixel);
584 const int grayValue = (red * 11 + green * 16 + blue * 5) / 32;
585 pixel[row * image.width() + col] = qRgb(grayValue, grayValue, grayValue);
589 image.setDevicePixelRatio(devicePixelRatioF());
590 d->previewLabel->setPixmap(QPixmap::fromImage(image));
721 d->view->setListViewMode(
d->requestedViewMode);
729 QGridLayout* thisLayout =
dynamic_cast<QGridLayout*
>(
layout());
730 thisLayout->addWidget(
d->tagManager->tagChooserWidget(), 0, 0);
731 thisLayout->addWidget(
d->viewModeButton, 0, 1);
732 thisLayout->addWidget(
d->storagePopupButton, 0, 2);
733 thisLayout->addWidget(
d->resourcesSplitter, 1, 0, 1, 3);
734 thisLayout->setRowStretch(1, 1);
735 thisLayout->addWidget(
d->tagManager->tagFilterWidget(), 2, 0, 1, 3);
736 thisLayout->addWidget(
d->importExportBtns, 3, 0, 1, 3);
738 d->viewModeButton->setVisible(
d->showViewModeBtn);
739 d->storagePopupButton->setVisible(
d->showStoragePopupBtn);
741 d->viewModeButton->setVisible(
d->showViewModeBtn);
747 if (
d->isResponsive ==
false) {
753 if (height() > 100) {
757 else if (height() > 60) {
769 QLayout* leftLayout =
d->left->layout();
770 leftLayout->addWidget(
d->resourcesSplitter);
773 d->top->addWidget(
d->scroll_left);
774 d->top->addWidget(
d->scroll_right);
775 d->top->addWidget(
d->tagManager->tagChooserWidget());
776 d->top->addWidget(
d->importExportBtns);
779 d->bot->addWidget(
d->viewModeButton);
780 d->bot->addWidget(
d->storagePopupButton);
781 d->bot->addWidget(
d->tagManager->tagFilterWidget());
783 d->horzSplitter->addWidget(
d->left);
784 d->horzSplitter->addWidget(
d->right2Rows);
786 QGridLayout* thisLayout =
dynamic_cast<QGridLayout*
>(
layout());
787 thisLayout->addWidget(
d->horzSplitter, 0, 0);
788 thisLayout->setRowStretch(0, 2);
789 thisLayout->setColumnStretch(0, 2);
790 thisLayout->setRowStretch(1, 0);
792 d->viewModeButton->setVisible(
false);
793 d->storagePopupButton->setVisible(
d->showStoragePopupBtn);
797 d->horzSplitter->show();
799 d->scroll_left->show();
800 d->scroll_right->show();
801 d->right2Rows->show();
805 if (!splitterRestored) {
820 QLayout* leftLayout =
d->left->layout();
821 leftLayout->addWidget(
d->resourcesSplitter);
822 leftLayout->addWidget(
d->scroll_left);
823 leftLayout->addWidget(
d->scroll_right);
825 QLayout* rightLayout =
d->right->layout();
826 rightLayout->addWidget(
d->tagManager->tagChooserWidget());
827 rightLayout->addWidget(
d->viewModeButton);
828 rightLayout->addWidget(
d->storagePopupButton);
829 rightLayout->addWidget(
d->tagManager->tagFilterWidget());
830 rightLayout->addWidget(
d->importExportBtns);
832 d->horzSplitter->addWidget(
d->left);
833 d->horzSplitter->addWidget(
d->right);
835 QGridLayout* thisLayout =
dynamic_cast<QGridLayout*
>(
layout());
836 thisLayout->addWidget(
d->horzSplitter, 0, 0);
837 thisLayout->setRowStretch(0, 2);
838 thisLayout->setColumnStretch(0, 2);
839 thisLayout->setRowStretch(1, 0);
841 d->viewModeButton->setVisible(
false);
842 d->storagePopupButton->setVisible(
d->showStoragePopupBtn);
846 d->horzSplitter->show();
848 d->scroll_left->show();
849 d->scroll_right->show();
854 if (!splitterRestored) {