QTfrontend/pages.cpp
changeset 2414 fd9ca82077d8
parent 2402 edd12b259e7c
child 2428 6800f8aa0184
equal deleted inserted replaced
2413:d921d13a8546 2414:fd9ca82077d8
   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())