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)));
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();
548 if (!
d->usePreview)
return;
550 if (!idx.isValid()) {
551 d->previewLabel->setPixmap(QPixmap());
557 if (image.format() != QImage::Format_RGB32 &&
558 image.format() != QImage::Format_ARGB32 &&
559 image.format() != QImage::Format_ARGB32_Premultiplied) {
561 image.convertTo(QImage::Format_ARGB32_Premultiplied);
564 if (
d->tiledPreview) {
565 int width =
d->previewScroller->width() * 4 * devicePixelRatioF();
566 int height =
d->previewScroller->height() * 4 * devicePixelRatioF();
567 QImage img(width, height, image.format());
569 gc.fillRect(img.rect(), Qt::white);
570 gc.setPen(Qt::NoPen);
571 gc.setBrush(QBrush(image));
572 gc.drawRect(img.rect());
577 if (
d->grayscalePreview && !image.isGrayscale()) {
578 QRgb *pixel =
reinterpret_cast<QRgb *
>(image.bits());
579 for (
int row = 0; row < image.height(); ++row) {
580 for (
int col = 0; col < image.width(); ++col) {
581 const QRgb currentPixel = pixel[row * image.width() + col];
582 const int red = qRed(currentPixel);
583 const int green = qGreen(currentPixel);
584 const int blue = qBlue(currentPixel);
585 const int grayValue = (red * 11 + green * 16 + blue * 5) / 32;
586 pixel[row * image.width() + col] = qRgb(grayValue, grayValue, grayValue);
590 image.setDevicePixelRatio(devicePixelRatioF());
591 d->previewLabel->setPixmap(QPixmap::fromImage(image));
722 d->view->setListViewMode(
d->requestedViewMode);
730 QGridLayout* thisLayout =
dynamic_cast<QGridLayout*
>(
layout());
731 thisLayout->addWidget(
d->tagManager->tagChooserWidget(), 0, 0);
732 thisLayout->addWidget(
d->viewModeButton, 0, 1);
733 thisLayout->addWidget(
d->storagePopupButton, 0, 2);
734 thisLayout->addWidget(
d->resourcesSplitter, 1, 0, 1, 3);
735 thisLayout->setRowStretch(1, 1);
736 thisLayout->addWidget(
d->tagManager->tagFilterWidget(), 2, 0, 1, 3);
737 thisLayout->addWidget(
d->importExportBtns, 3, 0, 1, 3);
739 d->viewModeButton->setVisible(
d->showViewModeBtn);
740 d->storagePopupButton->setVisible(
d->showStoragePopupBtn);
742 d->viewModeButton->setVisible(
d->showViewModeBtn);
748 if (
d->isResponsive ==
false) {
754 if (height() > 100) {
758 else if (height() > 60) {
770 QLayout* leftLayout =
d->left->layout();
771 leftLayout->addWidget(
d->resourcesSplitter);
774 d->top->addWidget(
d->scroll_left);
775 d->top->addWidget(
d->scroll_right);
776 d->top->addWidget(
d->tagManager->tagChooserWidget());
777 d->top->addWidget(
d->importExportBtns);
780 d->bot->addWidget(
d->viewModeButton);
781 d->bot->addWidget(
d->storagePopupButton);
782 d->bot->addWidget(
d->tagManager->tagFilterWidget());
784 d->horzSplitter->addWidget(
d->left);
785 d->horzSplitter->addWidget(
d->right2Rows);
787 QGridLayout* thisLayout =
dynamic_cast<QGridLayout*
>(
layout());
788 thisLayout->addWidget(
d->horzSplitter, 0, 0);
789 thisLayout->setRowStretch(0, 2);
790 thisLayout->setColumnStretch(0, 2);
791 thisLayout->setRowStretch(1, 0);
793 d->viewModeButton->setVisible(
false);
794 d->storagePopupButton->setVisible(
d->showStoragePopupBtn);
798 d->horzSplitter->show();
800 d->scroll_left->show();
801 d->scroll_right->show();
802 d->right2Rows->show();
806 if (!splitterRestored) {
821 QLayout* leftLayout =
d->left->layout();
822 leftLayout->addWidget(
d->resourcesSplitter);
823 leftLayout->addWidget(
d->scroll_left);
824 leftLayout->addWidget(
d->scroll_right);
826 QLayout* rightLayout =
d->right->layout();
827 rightLayout->addWidget(
d->tagManager->tagChooserWidget());
828 rightLayout->addWidget(
d->viewModeButton);
829 rightLayout->addWidget(
d->storagePopupButton);
830 rightLayout->addWidget(
d->tagManager->tagFilterWidget());
831 rightLayout->addWidget(
d->importExportBtns);
833 d->horzSplitter->addWidget(
d->left);
834 d->horzSplitter->addWidget(
d->right);
836 QGridLayout* thisLayout =
dynamic_cast<QGridLayout*
>(
layout());
837 thisLayout->addWidget(
d->horzSplitter, 0, 0);
838 thisLayout->setRowStretch(0, 2);
839 thisLayout->setColumnStretch(0, 2);
840 thisLayout->setRowStretch(1, 0);
842 d->viewModeButton->setVisible(
false);
843 d->storagePopupButton->setVisible(
d->showStoragePopupBtn);
847 d->horzSplitter->show();
849 d->scroll_left->show();
850 d->scroll_right->show();
855 if (!splitterRestored) {