774 PageRoomsList::PageRoomsList(QWidget* parent) : |
774 PageRoomsList::PageRoomsList(QWidget* parent) : |
775 AbstractPage(parent) |
775 AbstractPage(parent) |
776 { |
776 { |
777 QGridLayout * pageLayout = new QGridLayout(this); |
777 QGridLayout * pageLayout = new QGridLayout(this); |
778 |
778 |
|
779 QHBoxLayout * newRoomLayout = new QHBoxLayout(this); |
|
780 QLabel * roomNameLabel = new QLabel(this); |
|
781 roomNameLabel->setText(tr("Room Name:")); |
779 roomName = new QLineEdit(this); |
782 roomName = new QLineEdit(this); |
780 roomName->setMaxLength(60); |
783 roomName->setMaxLength(60); |
781 pageLayout->addWidget(roomName, 0, 0); |
784 newRoomLayout->addWidget(roomNameLabel); |
|
785 newRoomLayout->addWidget(roomName); |
|
786 pageLayout->addLayout(newRoomLayout, 0, 0); |
782 |
787 |
783 roomsList = new QTableWidget(this); |
788 roomsList = new QTableWidget(this); |
784 roomsList->setColumnCount(3); |
789 roomsList->setColumnCount(7); |
785 roomsList->setSelectionBehavior(QAbstractItemView::SelectRows); |
790 roomsList->setSelectionBehavior(QAbstractItemView::SelectRows); |
786 roomsList->verticalHeader()->setVisible(false); |
791 roomsList->verticalHeader()->setVisible(false); |
787 roomsList->horizontalHeader()->setResizeMode(QHeaderView::Interactive); |
792 roomsList->horizontalHeader()->setResizeMode(QHeaderView::Interactive); |
788 roomsList->setAlternatingRowColors(true); |
793 roomsList->setAlternatingRowColors(true); |
789 pageLayout->addWidget(roomsList, 1, 0, 3, 1); |
794 pageLayout->addWidget(roomsList, 1, 0, 3, 1); |
814 void PageRoomsList::setRoomsList(const QStringList & list) |
819 void PageRoomsList::setRoomsList(const QStringList & list) |
815 { |
820 { |
816 roomsList->clear(); |
821 roomsList->clear(); |
817 roomsList->setHorizontalHeaderLabels( |
822 roomsList->setHorizontalHeaderLabels( |
818 QStringList() << |
823 QStringList() << |
819 QTableWidget::tr("Room name") << |
824 QTableWidget::tr("Room Name") << |
820 QTableWidget::tr("Players number") << |
825 QTableWidget::tr("C") << |
821 QTableWidget::tr("Round in progress") |
826 QTableWidget::tr("T") << |
|
827 QTableWidget::tr("Owner") << |
|
828 QTableWidget::tr("Map") << |
|
829 QTableWidget::tr("Rules") << |
|
830 QTableWidget::tr("Weapons") |
822 ); |
831 ); |
823 |
832 |
824 roomsList->horizontalHeader()->setResizeMode(0, QHeaderView::Stretch); |
833 // set resize modes |
825 roomsList->horizontalHeader()->setResizeMode(1, QHeaderView::ResizeToContents); |
834 roomsList->horizontalHeader()->setResizeMode(0, QHeaderView::Stretch); |
826 roomsList->horizontalHeader()->setResizeMode(2, QHeaderView::ResizeToContents); |
835 roomsList->horizontalHeader()->setResizeMode(1, QHeaderView::ResizeToContents); |
827 |
836 roomsList->horizontalHeader()->setResizeMode(2, QHeaderView::ResizeToContents); |
828 |
837 roomsList->horizontalHeader()->setResizeMode(3, QHeaderView::ResizeToContents); |
829 if (list.size() % 3) |
838 roomsList->horizontalHeader()->setResizeMode(4, QHeaderView::ResizeToContents); |
|
839 roomsList->horizontalHeader()->setResizeMode(5, QHeaderView::ResizeToContents); |
|
840 roomsList->horizontalHeader()->setResizeMode(6, QHeaderView::ResizeToContents); |
|
841 |
|
842 if (list.size() % 8) |
830 return; |
843 return; |
831 |
844 |
832 roomsList->setRowCount(list.size() / 3); |
845 roomsList->setRowCount(list.size() / 8); |
833 for(int i = 0; i < list.size(); i += 3) |
846 for(int i = 0, r = 0; i < list.size(); i += 8, r++) |
834 for(int t = 0; t < 3; t++) |
847 { |
|
848 QTableWidgetItem * item; |
|
849 item = new QTableWidgetItem(list[i + 1]); // room name |
|
850 item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable); |
|
851 |
|
852 // pick appropriate room icon and tooltip (game in progress yes/no; later maybe locked rooms etc.) |
|
853 if(list[i].compare("True")) |
835 { |
854 { |
836 QTableWidgetItem * item = new QTableWidgetItem(list[i + t]); |
855 item->setIcon(QIcon(":/res/iconTime.png"));// game is in lobby |
837 item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable); |
856 item->setToolTip(tr("This game is in lobby.\nYou may join and start playing once the game starts.")); |
838 roomsList->setItem(i / 3, t, item); |
|
839 } |
857 } |
840 //roomsList->resizeColumnsToContents(); |
858 else |
|
859 { |
|
860 item->setIcon(QIcon(":/res/iconDamage.png"));// game has started |
|
861 item->setToolTip(tr("This game is in progress.\nYou may join and spectate now but you'll have to wait for the game to end to start playing.")); |
|
862 } |
|
863 |
|
864 roomsList->setItem(r, 0, item); |
|
865 |
|
866 item = new QTableWidgetItem(list[i + 2]); // number of clients |
|
867 item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable); |
|
868 item->setTextAlignment(Qt::AlignCenter); |
|
869 item->setToolTip(tr("There are %1 clients connected to this room.").arg(list[i + 2])); |
|
870 roomsList->setItem(r, 1, item); |
|
871 |
|
872 item = new QTableWidgetItem(list[i + 3]); // number of teams |
|
873 item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable); |
|
874 item->setTextAlignment(Qt::AlignCenter); |
|
875 item->setToolTip(tr("There are %1 teams participating in this room.").arg(list[i + 3])); |
|
876 roomsList->setItem(r, 2, item); |
|
877 |
|
878 item = new QTableWidgetItem(list[i + 4]); // name of host |
|
879 item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable); |
|
880 item->setToolTip(tr("%1 is the host. He may adjust settings and start the game.").arg(list[i + 4])); |
|
881 roomsList->setItem(r, 3, item); |
|
882 |
|
883 if(list[i + 5].compare("+rnd+")) |
|
884 item = new QTableWidgetItem(list[i + 5]); // selected map |
|
885 else |
|
886 item = new QTableWidgetItem(tr("Random Map")); // selected map (is randomized) |
|
887 |
|
888 item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable); |
|
889 item->setToolTip(tr("Games may be played on precreated or randomized maps.")); |
|
890 roomsList->setItem(r, 4, item); |
|
891 |
|
892 item = new QTableWidgetItem(list[i + 6]); // selected game scheme |
|
893 item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable); |
|
894 item->setToolTip(tr("The Game Scheme defines general options and preferences like Round Time, Sudden Death or Vampirism.")); |
|
895 roomsList->setItem(r, 5, item); |
|
896 |
|
897 item = new QTableWidgetItem(list[i + 7]); // selected weapon scheme |
|
898 item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable); |
|
899 item->setToolTip(tr("The Weapon Scheme defines available weapons and their ammunition count.")); |
|
900 roomsList->setItem(r, 6, item); |
|
901 |
|
902 } |
|
903 roomsList->resizeColumnsToContents(); |
841 } |
904 } |
842 |
905 |
843 void PageRoomsList::onCreateClick() |
906 void PageRoomsList::onCreateClick() |
844 { |
907 { |
845 if (roomName->text().size()) |
908 if (roomName->text().size()) |