27 #include <QHeaderView> |
27 #include <QHeaderView> |
28 #include <QGroupBox> |
28 #include <QGroupBox> |
29 #include <QMenu> |
29 #include <QMenu> |
30 #include <QDebug> |
30 #include <QDebug> |
31 #include <QSplitter> |
31 #include <QSplitter> |
|
32 #include <QSettings> |
32 |
33 |
33 #include <QSortFilterProxyModel> |
34 #include <QSortFilterProxyModel> |
34 |
35 |
35 #include "roomslistmodel.h" |
36 #include "roomslistmodel.h" |
36 |
37 |
37 #include "ammoSchemeModel.h" |
38 #include "gameSchemeModel.h" |
38 #include "hwconsts.h" |
39 #include "hwconsts.h" |
39 #include "chatwidget.h" |
40 #include "chatwidget.h" |
40 #include "roomnameprompt.h" |
41 #include "roomnameprompt.h" |
41 #include "lineeditcursor.h" |
42 #include "lineeditcursor.h" |
42 #include "pageroomslist.h" |
43 #include "pageroomslist.h" |
152 roomsLayout->setMargin(0); |
153 roomsLayout->setMargin(0); |
153 |
154 |
154 roomsList = new RoomTableView(this); |
155 roomsList = new RoomTableView(this); |
155 roomsList->setSelectionBehavior(QAbstractItemView::SelectRows); |
156 roomsList->setSelectionBehavior(QAbstractItemView::SelectRows); |
156 roomsList->verticalHeader()->setVisible(false); |
157 roomsList->verticalHeader()->setVisible(false); |
157 roomsList->horizontalHeader()->setResizeMode(QHeaderView::Interactive); |
158 roomsList->horizontalHeader()->setSectionResizeMode(QHeaderView::Interactive); |
|
159 roomsList->horizontalHeader()->stretchLastSection(); |
158 roomsList->setAlternatingRowColors(true); |
160 roomsList->setAlternatingRowColors(true); |
159 roomsList->setShowGrid(false); |
161 roomsList->setShowGrid(false); |
160 roomsList->setSelectionMode(QAbstractItemView::SingleSelection); |
162 roomsList->setSelectionMode(QAbstractItemView::SingleSelection); |
161 roomsList->setStyleSheet("QTableView { border-top-left-radius: 0px; }"); |
163 roomsList->setStyleSheet("QTableView { border-top-left-radius: 0px; }"); |
162 roomsList->setFocusPolicy(Qt::NoFocus); |
164 roomsList->setFocusPolicy(Qt::NoFocus); |
585 |
587 |
586 QHeaderView * h = roomsList->horizontalHeader(); |
588 QHeaderView * h = roomsList->horizontalHeader(); |
587 |
589 |
588 h->setSortIndicatorShown(true); |
590 h->setSortIndicatorShown(true); |
589 h->setSortIndicator(RoomsListModel::StateColumn, Qt::AscendingOrder); |
591 h->setSortIndicator(RoomsListModel::StateColumn, Qt::AscendingOrder); |
590 h->setResizeMode(RoomsListModel::NameColumn, QHeaderView::Stretch); |
592 h->setSectionResizeMode(RoomsListModel::NameColumn, QHeaderView::Stretch); |
591 |
593 |
592 if (!restoreHeaderState()) |
594 h->resizeSection(RoomsListModel::PlayerCountColumn, 32); |
593 { |
595 h->resizeSection(RoomsListModel::TeamCountColumn, 32); |
594 h->resizeSection(RoomsListModel::PlayerCountColumn, 32); |
596 h->resizeSection(RoomsListModel::OwnerColumn, 100); |
595 h->resizeSection(RoomsListModel::TeamCountColumn, 32); |
597 h->resizeSection(RoomsListModel::MapColumn, 100); |
596 h->resizeSection(RoomsListModel::OwnerColumn, 100); |
598 h->resizeSection(RoomsListModel::SchemeColumn, 100); |
597 h->resizeSection(RoomsListModel::MapColumn, 100); |
599 h->resizeSection(RoomsListModel::WeaponsColumn, 100); |
598 h->resizeSection(RoomsListModel::SchemeColumn, 100); |
|
599 h->resizeSection(RoomsListModel::WeaponsColumn, 100); |
|
600 } |
|
601 |
600 |
602 // hide column used for filtering |
601 // hide column used for filtering |
603 roomsList->hideColumn(RoomsListModel::StateColumn); |
602 roomsList->hideColumn(RoomsListModel::StateColumn); |
604 |
|
605 // save header state on change |
|
606 connect(roomsList->horizontalHeader(), SIGNAL(sortIndicatorChanged(int, Qt::SortOrder)), |
|
607 this, SLOT(saveHeaderState())); |
|
608 connect(roomsList->horizontalHeader(), SIGNAL(sectionResized(int, int, int)), |
|
609 this, SLOT(saveHeaderState())); |
|
610 |
603 |
611 roomsList->repaint(); |
604 roomsList->repaint(); |
612 } |
605 } |
613 |
606 |
614 |
607 |
668 |
661 |
669 void PageRoomsList::setSettings(QSettings *settings) |
662 void PageRoomsList::setSettings(QSettings *settings) |
670 { |
663 { |
671 m_gameSettings = settings; |
664 m_gameSettings = settings; |
672 } |
665 } |
673 |
|
674 bool PageRoomsList::restoreHeaderState() |
|
675 { |
|
676 if (m_gameSettings->contains("frontend/roomslist_splitter")) |
|
677 { |
|
678 m_splitter->restoreState(QByteArray::fromBase64( |
|
679 (m_gameSettings->value("frontend/roomslist_splitter").toByteArray()))); |
|
680 } |
|
681 |
|
682 if (m_gameSettings->contains("frontend/roomslist_header")) |
|
683 { |
|
684 return roomsList->horizontalHeader()->restoreState(QByteArray::fromBase64( |
|
685 (m_gameSettings->value("frontend/roomslist_header").toByteArray()))); |
|
686 } else return false; |
|
687 } |
|
688 |
|
689 void PageRoomsList::saveHeaderState() |
|
690 { |
|
691 m_gameSettings->setValue("frontend/roomslist_header", |
|
692 QString(roomsList->horizontalHeader()->saveState().toBase64())); |
|
693 |
|
694 m_gameSettings->setValue("frontend/roomslist_splitter", |
|
695 QString(m_splitter->saveState().toBase64())); |
|
696 } |
|