# HG changeset patch # User nemo # Date 1369167276 14400 # Node ID 1ae1b6017b27d144bd9eb33be86a045d03f8db2f # Parent f6074540bab239d106c32dac98cdcc31fd1776e6# Parent 279168729cc305a3bc030dcddf687eaddb10283d ಠ_ಠ diff -r f6074540bab2 -r 1ae1b6017b27 QTfrontend/hwform.cpp --- a/QTfrontend/hwform.cpp Tue May 21 16:13:32 2013 -0400 +++ b/QTfrontend/hwform.cpp Tue May 21 16:14:36 2013 -0400 @@ -319,8 +319,6 @@ connect(ui.pageMain->BtnNetLocal, SIGNAL(clicked()), this, SLOT(GoToNet())); connect(ui.pageMain->BtnNetOfficial, SIGNAL(clicked()), this, SLOT(NetConnectOfficialServer())); - connect(ui.pageConnecting, SIGNAL(cancelConnection()), this, SLOT(GoBack())); - connect(ui.pageVideos, SIGNAL(goBack()), config, SLOT(SaveVideosOptions())); ammoSchemeModel = new AmmoSchemeModel(this, cfgdir->absolutePath() + "/schemes.ini"); diff -r f6074540bab2 -r 1ae1b6017b27 QTfrontend/main.cpp --- a/QTfrontend/main.cpp Tue May 21 16:13:32 2013 -0400 +++ b/QTfrontend/main.cpp Tue May 21 16:14:36 2013 -0400 @@ -268,8 +268,13 @@ QString cc = settings.value("misc/locale", QString()).toString(); if (cc.isEmpty()) - cc = HWApplication::keyboardInputLocale().name(); - // QLocale::system().name() returns only "C"... + { + cc = QLocale::system().name(); + + // Fallback to current input locale if "C" locale is returned + if(cc == "C") + cc = HWApplication::keyboardInputLocale().name(); + } // load locale file into translator if (!Translator.load(QString("physfs://Locale/hedgewars_%1").arg(cc))) diff -r f6074540bab2 -r 1ae1b6017b27 QTfrontend/ui/page/pageroomslist.cpp --- a/QTfrontend/ui/page/pageroomslist.cpp Tue May 21 16:13:32 2013 -0400 +++ b/QTfrontend/ui/page/pageroomslist.cpp Tue May 21 16:14:36 2013 -0400 @@ -28,6 +28,7 @@ #include #include #include +#include #include @@ -107,7 +108,18 @@ topLayout->setRowStretch(1, 0); topLayout->setColumnStretch(3, 1); + // Rooms list and chat with splitter + m_splitter = new QSplitter(); + m_splitter->setChildrenCollapsible(false); + pageLayout->addWidget(m_splitter, 100); + // Room list + QWidget * roomsListWidget = new QWidget(this); + m_splitter->setOrientation(Qt::Vertical); + m_splitter->addWidget(roomsListWidget); + + QVBoxLayout * roomsLayout = new QVBoxLayout(roomsListWidget); + roomsLayout->setMargin(0); roomsList = new RoomTableView(this); roomsList->setSelectionBehavior(QAbstractItemView::SelectRows); @@ -118,7 +130,7 @@ roomsList->setSelectionMode(QAbstractItemView::SingleSelection); roomsList->setStyleSheet("QTableView { border-top-left-radius: 0px; }"); roomsList->setFocusPolicy(Qt::NoFocus); - pageLayout->addWidget(roomsList, 200); + roomsLayout->addWidget(roomsList, 200); // Room filters container @@ -126,9 +138,9 @@ filtersContainer->setMaximumWidth(800); filtersContainer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - pageLayout->addSpacing(7); - pageLayout->addWidget(filtersContainer, 0, Qt::AlignHCenter); - pageLayout->addSpacing(7); + roomsLayout->addSpacing(7); + roomsLayout->addWidget(filtersContainer, 0, Qt::AlignHCenter); + roomsLayout->addSpacing(7); QHBoxLayout * filterLayout = new QHBoxLayout(filtersContainer); filterLayout->setSpacing(0); @@ -194,7 +206,7 @@ // Lobby chat chatWidget = new HWChatWidget(this, false); - pageLayout->addWidget(chatWidget, 350); + m_splitter->addWidget(chatWidget); CBRules->addItem(QComboBox::tr("Any")); @@ -251,6 +263,8 @@ void PageRoomsList::roomSelectionChanged(const QModelIndex & current, const QModelIndex & previous) { + Q_UNUSED(previous); + BtnJoin->setEnabled(current.isValid()); } @@ -732,14 +746,24 @@ bool PageRoomsList::restoreHeaderState() { - if (!m_gameSettings->contains("frontend/roomslist_header")) - return false; - return roomsList->horizontalHeader()->restoreState(QByteArray::fromBase64( - (m_gameSettings->value("frontend/roomslist_header").toByteArray()))); + if (m_gameSettings->contains("frontend/roomslist_splitter")) + { + m_splitter->restoreState(QByteArray::fromBase64( + (m_gameSettings->value("frontend/roomslist_splitter").toByteArray()))); + } + + if (m_gameSettings->contains("frontend/roomslist_header")) + { + return roomsList->horizontalHeader()->restoreState(QByteArray::fromBase64( + (m_gameSettings->value("frontend/roomslist_header").toByteArray()))); + } else return false; } void PageRoomsList::saveHeaderState() { m_gameSettings->setValue("frontend/roomslist_header", QString(roomsList->horizontalHeader()->saveState().toBase64())); + + m_gameSettings->setValue("frontend/roomslist_splitter", + QString(m_splitter->saveState().toBase64())); } diff -r f6074540bab2 -r 1ae1b6017b27 QTfrontend/ui/page/pageroomslist.h --- a/QTfrontend/ui/page/pageroomslist.h Tue May 21 16:13:32 2013 -0400 +++ b/QTfrontend/ui/page/pageroomslist.h Tue May 21 16:14:36 2013 -0400 @@ -27,6 +27,7 @@ class QTableView; class RoomsListModel; class QSortFilterProxyModel; +class QSplitter; class RoomTableView : public QTableView { @@ -101,6 +102,7 @@ QSortFilterProxyModel * weaponsFilteredModel; QAction * showGamesInLobby; QAction * showGamesInProgress; + QSplitter * m_splitter; AmmoSchemeModel * ammoSchemeModel; diff -r f6074540bab2 -r 1ae1b6017b27 gameServer/Actions.hs --- a/gameServer/Actions.hs Tue May 21 16:13:32 2013 -0400 +++ b/gameServer/Actions.hs Tue May 21 16:14:36 2013 -0400 @@ -381,7 +381,7 @@ if p < 38 then processAction $ ByeClient $ loc "Nickname is already in use" else - processAction $ NoticeMessage NickAlreadyInUse + mapM_ processAction [NoticeMessage NickAlreadyInUse, ModifyClient $ \c -> c{nick = B.empty}] else do db <- gets (dbQueries . serverInfo) diff -r f6074540bab2 -r 1ae1b6017b27 gameServer/HWProtoCore.hs --- a/gameServer/HWProtoCore.hs Tue May 21 16:13:32 2013 -0400 +++ b/gameServer/HWProtoCore.hs Tue May 21 16:14:36 2013 -0400 @@ -43,12 +43,12 @@ where h ["DELEGATE", n] = handleCmd ["DELEGATE", n] h ["STATS"] = handleCmd ["STATS"] - h ["PART", msg] = handleCmd ["PART", msg] - h ["QUIT", msg] = handleCmd ["QUIT", msg] - h ["GLOBAL", msg] = do + h ("PART":m:ms) = handleCmd ["PART", B.unwords $ m:ms] + h ("QUIT":m:ms) = handleCmd ["QUIT", B.unwords $ m:ms] + h ("GLOBAL":m:ms) = do rnc <- liftM snd ask let chans = map (sendChan . client rnc) $ allClients rnc - return [AnswerClients chans ["CHAT", "[global notice]", msg]] + return [AnswerClients chans ["CHAT", "[global notice]", B.unwords $ m:ms]] h c = return [Warning . B.concat . L.intersperse " " $ "Unknown cmd" : c] handleCmd cmd = do diff -r f6074540bab2 -r 1ae1b6017b27 hedgewars/hwengine.pas --- a/hedgewars/hwengine.pas Tue May 21 16:13:32 2013 -0400 +++ b/hedgewars/hwengine.pas Tue May 21 16:14:36 2013 -0400 @@ -93,13 +93,7 @@ ScriptCall('onGameStart'); GameState:= gsGame; end; - gsConfirm, gsGame: - begin - if not cOnlyStats then DrawWorld(Lag); - DoGameTick(Lag); - if not cOnlyStats then ProcessVisualGears(Lag); - end; - gsChat: + gsConfirm, gsGame, gsChat: begin if not cOnlyStats then DrawWorld(Lag); DoGameTick(Lag); @@ -168,10 +162,10 @@ // sdl on iphone supports only ashii keyboards and the unicode field is deprecated in sdl 1.3 KeyPressChat(SDL_GetKeyFromScancode(event.key.keysym.sym), event.key.keysym.sym); //TODO correct for keymodifiers end - else - ProcessKey(event.key); + else + if GameState >= gsGame then ProcessKey(event.key); SDL_KEYUP: - if GameState <> gsChat then + if (GameState <> gsChat) and (GameState >= gsGame) then ProcessKey(event.key); SDL_WINDOWEVENT: @@ -213,19 +207,19 @@ if GameState = gsChat then KeyPressChat(event.key.keysym.unicode, event.key.keysym.sym) else - ProcessKey(event.key); + if GameState >= gsGame then ProcessKey(event.key); SDL_KEYUP: - if GameState <> gsChat then + if (GameState <> gsChat) and (GameState >= gsGame) then ProcessKey(event.key); SDL_MOUSEBUTTONDOWN: if GameState = gsConfirm then ParseCommand('quit', true) else - ProcessMouse(event.button, true); + if (GameState >= gsGame) then ProcessMouse(event.button, true); SDL_MOUSEBUTTONUP: - ProcessMouse(event.button, false); + if (GameState >= gsGame) then ProcessMouse(event.button, false); SDL_ACTIVEEVENT: if (event.active.state and SDL_APPINPUTFOCUS) <> 0 then diff -r f6074540bab2 -r 1ae1b6017b27 hedgewars/uWorld.pas --- a/hedgewars/uWorld.pas Tue May 21 16:13:32 2013 -0400 +++ b/hedgewars/uWorld.pas Tue May 21 16:14:36 2013 -0400 @@ -1320,7 +1320,7 @@ // draw health bars right border inc(r.x, cTeamHealthWidth + 2); r.w:= 3; - DrawTextureFromRect(TeamHealthBarWidth + 16, cScreenHeight + DrawHealthY + smallScreenOffset, @r, HealthTex); + DrawTextureFromRect(TeamHealthBarWidth + 15, cScreenHeight + DrawHealthY + smallScreenOffset, @r, HealthTex); if not highlight and (not hasGone) then for i:= 0 to cMaxHHIndex do @@ -1357,7 +1357,7 @@ // draw health bar r.w:= TeamHealthBarWidth + 1; r.h:= HealthTex^.h - 4; - DrawTextureFromRect(16, cScreenHeight + DrawHealthY + smallScreenOffset + 2, @r, HealthTex); + DrawTextureFromRect(15, cScreenHeight + DrawHealthY + smallScreenOffset + 2, @r, HealthTex); if not hasGone and (TeamHealth > 1) then begin Tint(Clan^.Color shl 8 or $FF); diff -r f6074540bab2 -r 1ae1b6017b27 share/hedgewars/Data/Locale/hedgewars_ru.ts --- a/share/hedgewars/Data/Locale/hedgewars_ru.ts Tue May 21 16:13:32 2013 -0400 +++ b/share/hedgewars/Data/Locale/hedgewars_ru.ts Tue May 21 16:14:36 2013 -0400 @@ -5,7 +5,7 @@ About Unknown Compiler - + Неизвестный компилятор @@ -30,31 +30,31 @@ BanDialog IP - IP + IP Nick - + Псевдоним IP/Nick - + IP/Псевдоним Reason - + Причина Duration - + Длительность Ok - + ОК Cancel - Отмена + Отмена you know why @@ -62,57 +62,57 @@ Warning - + Предупреждение Please, specify %1 - + Пожалуйста, укажите %1 nickname - + псевдоним permanent - + постоянный DataManager Use Default - + Использовать значение по умолчанию FeedbackDialog View - + Вид Cancel - Отмена + Отмена Send Feedback - + Отослать отзыв We are always happy about suggestions, ideas, or bug reports. - + Мы всегда рады новым предложениям, идям или сообщениям об ошибках. Send us feedback! - + Пришлите нам отзыв! If you found a bug, you can see if it's already been reported here: - + Если вы нашли ошибку, можете проверить, не было ли уже сообщения о ней здесь: Your email address is optional, but necessary if you want us to get back at you. - + Адрес e-mail необязателен, но необходим, если вы хотите получить ответ. @@ -146,73 +146,76 @@ Game scheme will auto-select a weapon - + Схема игры определяет набор оружия Map - Карта + Карта Game options - + Настройки игры HWApplication %1 minutes - - - - + + %1 минута + %1 минуты + %1 минут %1 hour - - - - + + %1 час + %1 часа + %1 часов %1 hours - - - - + + %1 час + %1 часа + %1 часов %1 day - - - - + + %1 день + %1 дня + %1 дней %1 days - - - - + + %1 день + %1 дня + %1 дней Scheme '%1' not supported - + Схема "%1" не поддерживается Cannot create directory %1 - Не могу создать папку %1 + Не могу создать папку %1 Failed to open data directory: %1 Please check your installation! - + Не могу открыть папку: +%1 + +Пожалуйста, проверьте установку приложения! @@ -266,15 +269,15 @@ %1 has joined - + %1 вошёл %1 has left - + %1 вышел %1 has left (%2) - + %1 вышел (%2) @@ -325,7 +328,7 @@ %1's Team - + Команда %1 Hedgewars - Nick registered @@ -374,7 +377,8 @@ You reconnected too fast. Please wait a few seconds and try again. - + Вы переподключились слишком быстро. +Пожалуйста, попробуйте снова через несколько секунд. This page requires an internet connection. @@ -432,91 +436,91 @@ Map type: - + Тип карты: Image map - + Изображение Mission map - + Миссия Hand-drawn - Рисованная карта + Рисованная карта Randomly generated - + Случайно сгенерированная Random maze - + Случайный лабиринт Random - Случайно + Случайно Map preview: - + Предпросмотр карты: Load map drawing - + Загрузить рисованную карту Edit map drawing - + Редактировать рисованную карту Small islands - + Маленькие острова Medium islands - + Средние острова Large islands - + Большие острова Map size: - + Размер карты: Maze style: - + Стиль лабиринта: Mission: - + Миссия: Map: - + Карта: Load drawn map - Загрузить рисованную карту + Загрузить рисованную карту Drawn Maps - Рисованные карты + Рисованные карты All files - Все файлы + Все файлы Large tunnels - + Большие туннели Theme: %1 - + Тема: %1 @@ -600,11 +604,11 @@ Nickname: - + Псевдоним: Password: - + Пароль: @@ -622,22 +626,22 @@ HatButton Change hat (%1) - + Сменить шляпу (%1) HatPrompt Cancel - Отмена + Отмена Use selected hat - + Использовать выбранную шляпу Search for a hat: - + Поиск по шляпам: @@ -651,7 +655,7 @@ KeyBinder Category - + Категория @@ -659,30 +663,30 @@ Duration: %1m %2s - Длительность: %1мин %2сек + Длительность: %1мин %2сек Video: %1x%2, - Видео: %1x%2, + Видео: %1x%2, %1 fps, - %1 кадров/сек, + %1 кадров/сек, Audio: - Аудио: + Аудио: unknown - + неизвестно MapModel No description available. - + Описание отсутствует. @@ -717,35 +721,35 @@ General - Основные настройки + Основные настройки Bans - + Баны IP/Nick - + IP/Псевдоним Expiration - + Окончание Reason - + Причина Refresh - + Обновить Add - + Добавить Remove - + Удалить @@ -759,7 +763,7 @@ PageDataDownload Loading, please wait. - + Идёт загрузка пожалуйста, подождите. This page requires an internet connection. @@ -817,35 +821,35 @@ Use my default - + Использовать мои настройки по умолчанию Reset all binds - + Сбросить все привязки Custom Controls - + Настройка управления Hat - Шляпа + Шляпа Name - Название + Название This hedgehog's name - + Имя этого ежа Randomize this hedgehog's name - + Выбрать случайное имя для этого ежа Random Team - Случайная команда + Случайная команда @@ -969,23 +973,23 @@ Play a game across a local area network - + Играть по локальной сети Play a game on an official server - + Играть на официальном сервере Feedback - + Отзыв Play local network game - + Играть по локальной сети Play official network game - + Играть на официальном сервере @@ -996,7 +1000,7 @@ Edit game preferences - Редактировать настройки игры + Редактировать настройки игры @@ -1007,19 +1011,19 @@ Edit game preferences - Редактировать настройки игры + Редактировать настройки игры Start - Старт + Старт Update - Обновить + Обновить Room controls - + Управление комнатой @@ -1121,47 +1125,47 @@ Reset to default - + Сбросить на значения по умолчанию Reset all binds - + Сбросить все привязки Game - + Игра Graphics - + Графика Audio - + Звук Controls - + Управление Video Recording - + Запись видео Network - + Сеть Teams - Команды + Команды Schemes - + Схемы Weapons - Оружие + Оружие Frontend @@ -1169,7 +1173,7 @@ Custom colors - Свои цвета + Свои цвета Game audio @@ -1185,23 +1189,23 @@ Proxy settings - Настройки прокси + Настройки прокси Miscellaneous - Разное + Разное Updates - + Обновления Check for updates - + Проверить обновления Video recording options - Настройки видео + Настройки видео @@ -1259,27 +1263,27 @@ Search for a room: - + Искать комнату: Create room - + Создать комнату Join room - + Войти в комнату Room state - + Состояние комнаты Clear filters - + Очистить фильтры Open server administration page - + Открыть страницу администрирования сервера @@ -1503,12 +1507,12 @@ Date: %1 - + Дата: %1 Size: %1 - + Размер: %1 @@ -1559,7 +1563,7 @@ Restrict Unregistered Players Join - + Запретить вход незарегистрированным игрокам Show games in lobby @@ -1567,7 +1571,7 @@ Show games in-progress - + Показать текущие игры @@ -1618,11 +1622,11 @@ Visual effects - + Визуальные эффекты Sound - + Звук In-game sound effects @@ -1630,7 +1634,7 @@ Music - + Музыка In-game music @@ -1991,15 +1995,15 @@ Fullscreen - Полный экран + Полный экран Fullscreen Resolution - + Разрешение в полноэкранном режиме Windowed Resolution - + Разрешение в оконном режиме Your Email @@ -2198,8 +2202,6 @@ Do you really want to remove %1 file(s)? - - @@ -2272,12 +2274,13 @@ Not all players are ready - + Не все игроки готовы Are you sure you want to start this game? Not all players are ready. - + Вы действительно хотите запустить игру? +Не все игроки готовы. @@ -2407,15 +2410,15 @@ RoomNamePrompt Enter a name for your room. - + Введите название для вашей комнаты. Cancel - Отмена + Отмена Create room - + Создать комнату @@ -2469,19 +2472,19 @@ SeedPrompt The map seed is the basis for all random values generated by the game. - + Зерно карты - это основа для всех псведослучайных значений, используемых в игре. Cancel - Отмена + Отмена Set seed - + Установить зерно Close - + Закрыть @@ -2527,29 +2530,29 @@ TeamSelWidget At least two teams are required to play! - + Для игры нужны как минимум две команды! TeamShowWidget %1's team - + Команда %1 ThemePrompt Cancel - Отмена + Отмена Search for a theme: - + Искать тему: Use selected theme - + Использовать выбранную тему @@ -2720,26 +2723,26 @@ hedgehog info - + информация о еже binds (categories) Movement - + Передвижение Weapons - Оружие + Оружие Camera - + Камера Miscellaneous - Разное + Разное @@ -2810,7 +2813,7 @@ Hedgehog movement - + Движение ежа