diff options
Diffstat (limited to 'launcher/ui/instanceview')
| -rw-r--r-- | launcher/ui/instanceview/InstanceDelegate.cpp | 46 | ||||
| -rw-r--r-- | launcher/ui/instanceview/InstanceView.cpp | 90 | ||||
| -rw-r--r-- | launcher/ui/instanceview/InstanceView.h | 44 | ||||
| -rw-r--r-- | launcher/ui/instanceview/VisualGroup.cpp | 49 | 
4 files changed, 172 insertions, 57 deletions
| diff --git a/launcher/ui/instanceview/InstanceDelegate.cpp b/launcher/ui/instanceview/InstanceDelegate.cpp index b446e39d..137cc8d5 100644 --- a/launcher/ui/instanceview/InstanceDelegate.cpp +++ b/launcher/ui/instanceview/InstanceDelegate.cpp @@ -1,16 +1,36 @@ -/* Copyright 2013-2021 MultiMC Contributors +// SPDX-License-Identifier: GPL-3.0-only +/* + *  PolyMC - Minecraft Launcher + *  Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>   * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + *  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, version 3.   * - *     http://www.apache.org/licenses/LICENSE-2.0 + *  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.   * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + *  You should have received a copy of the GNU General Public License + *  along with this program.  If not, see <https://www.gnu.org/licenses/>. + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + *      Copyright 2013-2021 MultiMC Contributors + * + *      Licensed under the Apache License, Version 2.0 (the "License"); + *      you may not use this file except in compliance with the License. + *      You may obtain a copy of the License at + * + *          http://www.apache.org/licenses/LICENSE-2.0 + * + *      Unless required by applicable law or agreed to in writing, software + *      distributed under the License is distributed on an "AS IS" BASIS, + *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + *      See the License for the specific language governing permissions and + *      limitations under the License.   */  #include "InstanceDelegate.h" @@ -24,7 +44,7 @@  #include "InstanceView.h"  #include "BaseInstance.h"  #include "InstanceList.h" -#include <xdgicon.h> +#include <QIcon>  #include <QTextEdit>  // Origin: Qt @@ -61,7 +81,7 @@ void drawSelectionRect(QPainter *painter, const QStyleOptionViewItem &option,          painter->fillRect(rect, option.palette.brush(QPalette::Highlight));      else      { -        QColor backgroundColor = option.palette.color(QPalette::Background); +        QColor backgroundColor = option.palette.color(QPalette::Window);          backgroundColor.setAlpha(160);          painter->fillRect(rect, QBrush(backgroundColor));      } @@ -142,7 +162,7 @@ void drawBadges(QPainter *painter, const QStyleOptionViewItem &option, BaseInsta                  return;              }              // FIXME: inject this. -            auto icon = XdgIcon::fromTheme(it.next()); +            auto icon = QIcon::fromTheme(it.next());              // opt.icon.paint(painter, iconbox, Qt::AlignCenter, mode, state);              const QPixmap pixmap;              // itemSide diff --git a/launcher/ui/instanceview/InstanceView.cpp b/launcher/ui/instanceview/InstanceView.cpp index 25aec1ab..fbeffe35 100644 --- a/launcher/ui/instanceview/InstanceView.cpp +++ b/launcher/ui/instanceview/InstanceView.cpp @@ -1,16 +1,36 @@ -/* Copyright 2013-2021 MultiMC Contributors +// SPDX-License-Identifier: GPL-3.0-only +/* + *  PolyMC - Minecraft Launcher + *  Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>   * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + *  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, version 3.   * - *     http://www.apache.org/licenses/LICENSE-2.0 + *  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.   * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + *  You should have received a copy of the GNU General Public License + *  along with this program.  If not, see <https://www.gnu.org/licenses/>. + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + *      Copyright 2013-2021 MultiMC Contributors + * + *      Licensed under the Apache License, Version 2.0 (the "License"); + *      you may not use this file except in compliance with the License. + *      You may obtain a copy of the License at + * + *          http://www.apache.org/licenses/LICENSE-2.0 + * + *      Unless required by applicable law or agreed to in writing, software + *      distributed under the License is distributed on an "AS IS" BASIS, + *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + *      See the License for the specific language governing permissions and + *      limitations under the License.   */  #include "InstanceView.h" @@ -425,7 +445,12 @@ void InstanceView::mouseReleaseEvent(QMouseEvent *event)          {              emit clicked(index);          } +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +        QStyleOptionViewItem option; +        initViewItemOption(&option); +#else          QStyleOptionViewItem option = viewOptions(); +#endif          if (m_pressedAlreadySelected)          {              option.state |= QStyle::State_Selected; @@ -461,7 +486,12 @@ void InstanceView::mouseDoubleClickEvent(QMouseEvent *event)      QPersistentModelIndex persistent = index;      emit doubleClicked(persistent); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +    QStyleOptionViewItem option; +    initViewItemOption(&option); +#else      QStyleOptionViewItem option = viewOptions(); +#endif      if ((model()->flags(index) & Qt::ItemIsEnabled) && !style()->styleHint(QStyle::SH_ItemView_ActivateItemOnSingleClick, &option, this))      {          emit activated(index); @@ -474,7 +504,12 @@ void InstanceView::paintEvent(QPaintEvent *event)      QPainter painter(this->viewport()); -    QStyleOptionViewItem option(viewOptions()); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +    QStyleOptionViewItem option; +    initViewItemOption(&option); +#else +    QStyleOptionViewItem option = viewOptions(); +#endif      option.widget = this;      int wpWidth = viewport()->width(); @@ -528,9 +563,9 @@ void InstanceView::paintEvent(QPaintEvent *event)  #if 0      if (!m_lastDragPosition.isNull())      { -        QPair<Group *, int> pair = rowDropPos(m_lastDragPosition); -        Group *category = pair.first; -        int row = pair.second; +        std::pair<VisualGroup *, VisualGroup::HitResults> pair = rowDropPos(m_lastDragPosition); +        VisualGroup *category = pair.first; +        VisualGroup::HitResults row = pair.second;          if (category)          {              int internalRow = row - category->firstItemIndex; @@ -618,7 +653,7 @@ void InstanceView::dropEvent(QDropEvent *event)      {          if(event->possibleActions() & Qt::MoveAction)          { -            QPair<VisualGroup *, VisualGroup::HitResults> dropPos = rowDropPos(event->pos()); +            std::pair<VisualGroup *, VisualGroup::HitResults> dropPos = rowDropPos(event->pos());              const VisualGroup *group = dropPos.first;              auto hitresult = dropPos.second; @@ -709,10 +744,18 @@ QRect InstanceView::geometryRect(const QModelIndex &index) const      int x = pos.first;      // int y = pos.second; + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +    QStyleOptionViewItem option; +    initViewItemOption(&option); +#else +    QStyleOptionViewItem option = viewOptions(); +#endif +      QRect out;      out.setTop(cat->verticalPosition() + cat->headerHeight() + 5 + cat->rowTopOf(index));      out.setLeft(m_spacing + x * (itemWidth() + m_spacing)); -    out.setSize(itemDelegate()->sizeHint(viewOptions(), index)); +    out.setSize(itemDelegate()->sizeHint(option, index));      geometryCache.insert(row, new QRect(out));      return out;  } @@ -759,7 +802,12 @@ QPixmap InstanceView::renderToPixmap(const QModelIndexList &indices, QRect *r) c      QPixmap pixmap(r->size());      pixmap.fill(Qt::transparent);      QPainter painter(&pixmap); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +    QStyleOptionViewItem option; +    initViewItemOption(&option); +#else      QStyleOptionViewItem option = viewOptions(); +#endif      option.state |= QStyle::State_Selected;      for (int j = 0; j < paintPairs.count(); ++j)      { @@ -770,16 +818,16 @@ QPixmap InstanceView::renderToPixmap(const QModelIndexList &indices, QRect *r) c      return pixmap;  } -QList<QPair<QRect, QModelIndex>> InstanceView::draggablePaintPairs(const QModelIndexList &indices, QRect *r) const +QList<std::pair<QRect, QModelIndex>> InstanceView::draggablePaintPairs(const QModelIndexList &indices, QRect *r) const  {      Q_ASSERT(r);      QRect &rect = *r; -    QList<QPair<QRect, QModelIndex>> ret; +    QList<std::pair<QRect, QModelIndex>> ret;      for (int i = 0; i < indices.count(); ++i)      {          const QModelIndex &index = indices.at(i);          const QRect current = geometryRect(index); -        ret += qMakePair(current, index); +        ret += std::make_pair(current, index);          rect |= current;      }      return ret; @@ -790,11 +838,11 @@ bool InstanceView::isDragEventAccepted(QDropEvent *event)      return true;  } -QPair<VisualGroup *, VisualGroup::HitResults> InstanceView::rowDropPos(const QPoint &pos) +std::pair<VisualGroup *, VisualGroup::HitResults> InstanceView::rowDropPos(const QPoint &pos)  {      VisualGroup::HitResults hitresult;      auto group = categoryAt(pos + offset(), hitresult); -    return qMakePair<VisualGroup*, int>(group, hitresult); +    return std::make_pair(group, hitresult);  }  QPoint InstanceView::offset() const diff --git a/launcher/ui/instanceview/InstanceView.h b/launcher/ui/instanceview/InstanceView.h index 406362e6..ac338274 100644 --- a/launcher/ui/instanceview/InstanceView.h +++ b/launcher/ui/instanceview/InstanceView.h @@ -1,16 +1,36 @@ -/* Copyright 2013-2021 MultiMC Contributors +// SPDX-License-Identifier: GPL-3.0-only +/* + *  PolyMC - Minecraft Launcher + *  Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>   * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + *  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, version 3.   * - *     http://www.apache.org/licenses/LICENSE-2.0 + *  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.   * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + *  You should have received a copy of the GNU General Public License + *  along with this program.  If not, see <https://www.gnu.org/licenses/>. + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + *      Copyright 2013-2021 MultiMC Contributors + * + *      Licensed under the Apache License, Version 2.0 (the "License"); + *      you may not use this file except in compliance with the License. + *      You may obtain a copy of the License at + * + *          http://www.apache.org/licenses/LICENSE-2.0 + * + *      Unless required by applicable law or agreed to in writing, software + *      distributed under the License is distributed on an "AS IS" BASIS, + *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + *      See the License for the specific language governing permissions and + *      limitations under the License.   */  #pragma once @@ -143,11 +163,11 @@ private: /* methods */      int calculateItemsPerRow() const;      int verticalScrollToValue(const QModelIndex &index, const QRect &rect, QListView::ScrollHint hint) const;      QPixmap renderToPixmap(const QModelIndexList &indices, QRect *r) const; -    QList<QPair<QRect, QModelIndex>> draggablePaintPairs(const QModelIndexList &indices, QRect *r) const; +    QList<std::pair<QRect, QModelIndex>> draggablePaintPairs(const QModelIndexList &indices, QRect *r) const;      bool isDragEventAccepted(QDropEvent *event); -    QPair<VisualGroup *, VisualGroup::HitResults> rowDropPos(const QPoint &pos); +    std::pair<VisualGroup *, VisualGroup::HitResults> rowDropPos(const QPoint &pos);      QPoint offset() const;  }; diff --git a/launcher/ui/instanceview/VisualGroup.cpp b/launcher/ui/instanceview/VisualGroup.cpp index 8991fb2d..e6bca17d 100644 --- a/launcher/ui/instanceview/VisualGroup.cpp +++ b/launcher/ui/instanceview/VisualGroup.cpp @@ -1,16 +1,36 @@ -/* Copyright 2013-2021 MultiMC Contributors +// SPDX-License-Identifier: GPL-3.0-only +/* + *  PolyMC - Minecraft Launcher + *  Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>   * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + *  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, version 3.   * - *     http://www.apache.org/licenses/LICENSE-2.0 + *  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.   * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + *  You should have received a copy of the GNU General Public License + *  along with this program.  If not, see <https://www.gnu.org/licenses/>. + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + *      Copyright 2013-2021 MultiMC Contributors + * + *      Licensed under the Apache License, Version 2.0 (the "License"); + *      you may not use this file except in compliance with the License. + *      You may obtain a copy of the License at + * + *          http://www.apache.org/licenses/LICENSE-2.0 + * + *      Unless required by applicable law or agreed to in writing, software + *      distributed under the License is distributed on an "AS IS" BASIS, + *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + *      See the License for the specific language governing permissions and + *      limitations under the License.   */  #include "VisualGroup.h" @@ -55,7 +75,14 @@ void VisualGroup::update()              positionInRow = 0;              maxRowHeight = 0;          } -        auto itemHeight = view->itemDelegate()->sizeHint(view->viewOptions(), item).height(); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +        QStyleOptionViewItem viewItemOption; +        view->initViewItemOption(&viewItemOption); +#else +        QStyleOptionViewItem viewItemOption = view->viewOptions(); +#endif + +        auto itemHeight = view->itemDelegate()->sizeHint(viewItemOption, item).height();          if(itemHeight > maxRowHeight)          {              maxRowHeight = itemHeight; | 
