/*
* The ManaPlus Client
* Copyright (C) 2009 The Mana World Development Team
* Copyright (C) 2009-2010 Andrei Karas
* Copyright (C) 2011-2013 The ManaPlus Developers
*
* This file is part of The ManaPlus Client.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "gui/setup_other.h"
#include "gui/widgets/layouthelper.h"
#include "gui/widgets/namesmodel.h"
#include "gui/widgets/scrollarea.h"
#include "configuration.h"
#include "utils/gettext.h"
#include "debug.h"
static const int shortcutsListSize = 3;
static const char *const shortcutsList[] =
{
N_("Always show"),
N_("Auto hide in small resolution"),
N_("Always auto hide")
};
static const int proxyTypeListSize = 8;
static const char *const proxyTypeList[] =
{
// TRANSLATORS: Proxy type selection
N_("System proxy"),
// TRANSLATORS: Proxy type selection
N_("Direct connection"),
"HTTP",
"HTTP 1.0",
"SOCKS4",
"SOCKS4A",
"SOCKS5",
// TRANSLATORS: Proxy type selection
N_("SOCKS5 hostname")
};
static const int densityListSize = 7;
static const char *const densityList[] =
{
N_("default"),
N_("low"),
N_("medium"),
N_("tv"),
N_("high"),
N_("xhigh"),
N_("xxhigh")
};
Setup_Other::Setup_Other(const Widget2 *const widget) :
SetupTabScroll(widget),
mProxyTypeList(new NamesModel),
mShortcutsList(new NamesModel),
mDensityList(new NamesModel)
{
setName(_("Misc"));
LayoutHelper h(this);
ContainerPlacer place = h.getPlacer(0, 0);
place(0, 0, mScroll, 10, 10);
new SetupItemLabel(_("Monsters"), "", this);
new SetupItemCheckBox(_("Show damage inflicted to monsters"), "",
"showMonstersTakedDamage", this, "showMonstersTakedDamageEvent");
new SetupItemCheckBox(_("Auto target only reachable monsters"), "",
"targetOnlyReachable", this, "targetOnlyReachableEvent");
new SetupItemCheckBox(_("Highlight monster attack range"), "",
"highlightMonsterAttackRange", this,
"highlightMonsterAttackRangeEvent");
new SetupItemCheckBox(_("Show monster hp bar"), "",
"showMobHP", this, "showMobHPEvent");
new SetupItemCheckBox(_("Cycle monster targets"), "",
"cycleMonsters", this, "cycleMonstersEvent");
new SetupItemLabel(_("Map"), "", this);
new SetupItemCheckBox(_("Show warps particles"), "",
"warpParticle", this, "warpParticleEvent");
new SetupItemCheckBox(_("Highlight map portals"), "",
"highlightMapPortals", this, "highlightMapPortalsEvent");
new SetupItemCheckBox(_("Highlight floor items"), "",
"floorItemsHighlight", this, "floorItemsHighlightEvent");
new SetupItemCheckBox(_("Highlight player attack range"), "",
"highlightAttackRange", this, "highlightAttackRangeEvent");
new SetupItemCheckBox(_("Show extended minimaps"), "",
"showExtMinimaps", this, "showExtMinimapsEvent");
new SetupItemCheckBox(_("Draw path"), "", "drawPath",
this, "drawPathEvent");
new SetupItemCheckBox(_("Draw hotkeys on map"), "", "drawHotKeys",
this, "drawHotKeysEvent");
new SetupItemCheckBox(_("Enable lazy scrolling"), "",
"enableLazyScrolling", this, "enableLazyScrollingEvent");
new SetupItemIntTextField(_("Scroll laziness"), "", "ScrollLaziness",
this, "ScrollLazinessEvent", 1, 160);
new SetupItemIntTextField(_("Scroll radius"), "", "ScrollRadius",
this, "ScrollRadiusEvent", 0, 32);
new SetupItemCheckBox(_("Auto resize minimaps"), "", "autoresizeminimaps",
this, "autoresizeminimapsEvent");
new SetupItemLabel(_("Moving"), "", this);
new SetupItemCheckBox(_("Auto fix position"), "",
"autofixPos", this, "autofixPosEvent");
new SetupItemCheckBox(_("Attack while moving"), "",
"attackMoving", this, "attackMovingEvent");
new SetupItemCheckBox(_("Attack next target"), "",
"attackNext", this, "attackNextEvent");
new SetupItemCheckBox(_("Sync player move"), "", "syncPlayerMove",
this, "syncPlayerMoveEvent");
new SetupItemTextField(_("Crazy move A program"), "",
"crazyMoveProgram", this, "crazyMoveProgramEvent");
new SetupItemCheckBox(_("Mouse relative moves "
"(good for touch interfaces)"), "", "mouseDirectionMove",
this, "mouseDirectionMoveEvent");
new SetupItemLabel(_("Player"), "", this);
new SetupItemCheckBox(_("Show own hp bar"), "",
"showOwnHP", this, "showOwnHPEvent");
new SetupItemCheckBox(_("Enable quick stats"), "",
"quickStats", this, "quickStatsEvent");
new SetupItemCheckBox(_("Cycle player targets"), "",
"cyclePlayers", this, "cyclePlayersEvent");
new SetupItemCheckBox(_("Show job exp messages"), "",
"showJobExp", this, "showJobExpEvent");
new SetupItemCheckBox(_("Show players popups"), "",
"showBeingPopup", this, "showBeingPopupEvent");
new SetupItemTextField(_("Afk message"), "",
"afkMessage", this, "afkMessageEvent");
new SetupItemCheckBox(_("Show job"), "", "showJob",
this, "showJobEvent", false);
new SetupItemCheckBox(_("Enable attack filter"), "",
"enableAttackFilter", this, "enableAttackFilterEvent");
new SetupItemCheckBox(_("Enable pickup filter"), "",
"enablePickupFilter", this, "enablePickupFilterEvent");
new SetupItemCheckBox(_("Enable advert protocol"), "",
"enableAdvert", this, "enableAdvertEvent");
new SetupItemCheckBox(_("Enable weight notifications"), "",
"weightMsg", this, "weightMsgEvent");
new SetupItemLabel(_("Shop"), "", this);
new SetupItemCheckBox(_("Accept sell/buy requests"), "",
"autoShop", this, "autoShopEvent");
new SetupItemCheckBox(_("Enable shop mode"), "",
"tradebot", this, "tradebotEvent");
new SetupItemLabel(_("NPC"), "", this);
new SetupItemCheckBox(_("Cycle npc targets"), "",
"cycleNPC", this, "cycleNPCEvent");
new SetupItemCheckBox(_("Log NPC dialogue"), "", "logNpcInGui",
this, "logNpcInGuiEvent");
new SetupItemLabel(_("Bots support"), "", this);
new SetupItemCheckBox(_("Enable auction bot support"), "",
"enableAuctionBot", this, "enableAuctionBotEvent", false);
new SetupItemCheckBox(_("Enable guild bot support and disable native "
"guild support"), "", "enableGuildBot", this,
"enableGuildBotEvent", false);
new SetupItemLabel(_("Keyboard"), "", this);
new SetupItemIntTextField(_("Repeat delay"), "",
"repeateDelay", this, "repeateDelayEvent", 0, 10000);
new SetupItemIntTextField(_("Repeat interval"), "",
"repeateInterval", this, "repeateIntervalEvent", 0, 10000);
new SetupItemIntTextField(_("Custom repeat interval"), "",
"repeateInterval2", this, "repeateInterval2Event", 0, 10000);
new SetupItemLabel(_("Windows"), "", this);
mShortcutsList->fillFromArray(&shortcutsList[0], shortcutsListSize);
new SetupItemDropDown(_("Shortcut buttons"), "", "autohideButtons", this,
"autohideButtonsEvent", mShortcutsList, 200);
new SetupItemLabel(_("Proxy server"), "", this);
mProxyTypeList->fillFromArray(&proxyTypeList[0], proxyTypeListSize);
new SetupItemDropDown(_("Proxy type"), "", "downloadProxyType", this,
"downloadProxyTypeEvent", mProxyTypeList, 200);
new SetupItemTextField(_("Proxy address:port"), "",
"downloadProxy", this, "downloadProxyEvent");
new SetupItemLabel(_("Other"), "", this);
new SetupItemCheckBox(_("Enable server side attack"), "",
"serverAttack", this, "serverAttackEvent");
new SetupItemCheckBox(_("Enable bot checker"), "",
"enableBotCheker", this, "enableBotChekerEvent");
new SetupItemCheckBox(_("Enable buggy servers protection "
"(do not disable)"), "", "enableBuggyServers", this,
"enableBuggyServersEvent", false);
new SetupItemCheckBox(_("Enable debug log"), "",
"debugLog", this, "debugLogEvent");
new SetupItemCheckBox(_("Enable OpenGL log"), "",
"debugOpenGL", this, "debugOpenGLEvent");
new SetupItemCheckBox(_("Enable input log"), "",
"logInput", this, "logInputEvent");
new SetupItemCheckBox(_("Low traffic mode"), "", "lowTraffic",
this, "lowTrafficEvent");
new SetupItemCheckBox(_("Hide shield sprite"), "", "hideShield",
this, "hideShieldEvent");
#ifndef ANDROID
new SetupItemCheckBox(_("Use FBO for screenshots (only for opengl)"),
"", "usefbo", this, "usefboEvent");
#endif
new SetupItemIntTextField(_("Network delay between sub servers"),
"", "networksleep", this, "networksleepEvent", 0, 10000);
new SetupItemCheckBox(_("Show background"), "", "showBackground",
this, "showBackgroundEvent");
mDensityList->fillFromArray(&densityList[0], densityListSize);
new SetupItemDropDown(_("Screen density override"), "",
"screenDensity", this, "screenDensityEvent", mDensityList, 100);
setDimension(gcn::Rectangle(0, 0, 550, 350));
}
Setup_Other::~Setup_Other()
{
delete mProxyTypeList;
mProxyTypeList = nullptr;
delete mShortcutsList;
mShortcutsList = nullptr;
}
void Setup_Other::apply()
{
SetupTabScroll::apply();
logger->setDebugLog(config.getBoolValue("debugLog"));
}
void Setup_Other::externalUpdated()
{
reread("showJob");
reread("enableGuildBot");
reread("enableBuggyServers");
}