QTfrontend/ui/page/pageroomslist.cpp
branchios-develop
changeset 13418 ba39a1d396c0
parent 13330 4a713e29a4da
child 14841 b9437746bffb
equal deleted inserted replaced
13416:6e8b807bda4b 13418:ba39a1d396c0
    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 }