Mercurial > minori
comparison src/gui/widgets/sidebar.cc @ 250:c130f47f6f48
*: many many changes
e.g. the search page is actually implemented now!
| author | Paper <paper@paper.us.eu.org> |
|---|---|
| date | Sun, 04 Feb 2024 21:17:17 -0500 |
| parents | 4d461ef7d424 |
| children | a0eeb2cc7e6d |
comparison
equal
deleted
inserted
replaced
| 249:6b2441c776dd | 250:c130f47f6f48 |
|---|---|
| 1 #include "gui/widgets/sidebar.h" | 1 #include "gui/widgets/sidebar.h" |
| 2 #include <QFrame> | 2 #include <QFrame> |
| 3 #include <QListWidget> | 3 #include <QListWidget> |
| 4 #include <QListWidgetItem> | 4 #include <QListWidgetItem> |
| 5 #include <QMouseEvent> | 5 #include <QMouseEvent> |
| 6 | |
| 7 #include <iostream> | |
| 6 | 8 |
| 7 SideBar::SideBar(QWidget* parent) : QListWidget(parent) { | 9 SideBar::SideBar(QWidget* parent) : QListWidget(parent) { |
| 8 setFrameShape(QFrame::NoFrame); | 10 setFrameShape(QFrame::NoFrame); |
| 9 setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); | 11 setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); |
| 10 setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); | 12 setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); |
| 28 return RemoveSeparatorsFromIndex(currentRow()); | 30 return RemoveSeparatorsFromIndex(currentRow()); |
| 29 } | 31 } |
| 30 | 32 |
| 31 void SideBar::SetBackgroundColor(QColor color) { | 33 void SideBar::SetBackgroundColor(QColor color) { |
| 32 viewport()->setAutoFillBackground(color != Qt::transparent); | 34 viewport()->setAutoFillBackground(color != Qt::transparent); |
| 35 | |
| 33 QPalette pal(palette()); | 36 QPalette pal(palette()); |
| 34 pal.setColor(QPalette::Window, color); | 37 pal.setColor(QPalette::Window, color); |
| 35 setPalette(pal); | 38 setPalette(pal); |
| 36 } | 39 } |
| 37 | 40 |
| 64 item->setBackground(QBrush(Qt::transparent)); | 67 item->setBackground(QBrush(Qt::transparent)); |
| 65 return item; | 68 return item; |
| 66 } | 69 } |
| 67 | 70 |
| 68 int SideBar::AddSeparatorsToIndex(int index) { | 71 int SideBar::AddSeparatorsToIndex(int index) { |
| 69 int i, j; | 72 int i = 0, separators = 0, items = 0; |
| 70 for (i = 0, j = 0; i < index;) { | 73 |
| 71 i++; | 74 for (; items <= index; ) { |
| 72 if (IndexIsSeparator(indexFromItem(item(i)))) | 75 if (IndexIsSeparator(indexFromItem(item(i++)))) { |
| 73 j++; | 76 separators++; |
| 77 } else { | |
| 78 items++; | |
| 79 } | |
| 74 } | 80 } |
| 75 return i + j; | 81 |
| 82 return index + separators; | |
| 76 } | 83 } |
| 77 | 84 |
| 78 int SideBar::RemoveSeparatorsFromIndex(int index) { | 85 int SideBar::RemoveSeparatorsFromIndex(int index) { |
| 79 int i, j; | 86 int i = 0, items = 0; |
| 80 for (i = 0, j = 0; i < index; i++) { | 87 for (; i < index; i++) { |
| 81 if (!IndexIsSeparator(indexFromItem(item(i)))) | 88 if (!IndexIsSeparator(indexFromItem(item(i)))) |
| 82 j++; | 89 items++; |
| 83 } | 90 } |
| 84 return j; | 91 return items; |
| 85 } | 92 } |
| 86 | 93 |
| 87 bool SideBar::IndexIsSeparator(QModelIndex index) const { | 94 bool SideBar::IndexIsSeparator(QModelIndex index) const { |
| 88 return !(index.isValid() && index.flags() & Qt::ItemIsEnabled); | 95 return !index.isValid() || !(index.flags() & Qt::ItemIsEnabled); |
| 89 } | 96 } |
| 90 | 97 |
| 91 QItemSelectionModel::SelectionFlags SideBar::selectionCommand(const QModelIndex& index, const QEvent*) const { | 98 QItemSelectionModel::SelectionFlags SideBar::selectionCommand(const QModelIndex& index, const QEvent*) const { |
| 92 if (IndexIsSeparator(index)) | 99 if (IndexIsSeparator(index)) |
| 93 return QItemSelectionModel::NoUpdate; | 100 return QItemSelectionModel::NoUpdate; |
