linuxdcpp-team team mailing list archive
-
linuxdcpp-team team
-
Mailing list archive
-
Message #05615
[Branch ~dcplusplus-team/dcplusplus/trunk] Rev 2927: make HubSettings easier to extend
------------------------------------------------------------
revno: 2927
committer: poy <poy@xxxxxxxxxx>
branch nick: trunk
timestamp: Thu 2012-05-24 19:47:25 +0200
message:
make HubSettings easier to extend
modified:
dcpp/AdcHub.cpp
dcpp/Client.cpp
dcpp/Client.h
dcpp/HubSettings.cpp
dcpp/HubSettings.h
dcpp/NmdcHub.cpp
dcpp/SettingsManager.cpp
win32/FavHubGroupsDlg.cpp
win32/FavHubProperties.cpp
win32/FavHubsFrame.cpp
win32/HubFrame.cpp
--
lp:dcplusplus
https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk
Your team Dcplusplus-team is subscribed to branch lp:dcplusplus.
To unsubscribe from this branch go to https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk/+edit-subscription
=== modified file 'dcpp/AdcHub.cpp'
--- dcpp/AdcHub.cpp 2012-05-23 22:05:22 +0000
+++ dcpp/AdcHub.cpp 2012-05-24 17:47:25 +0000
@@ -966,13 +966,13 @@
addParam(lastInfoMap, c, "ID", ClientManager::getInstance()->getMyCID().toBase32());
addParam(lastInfoMap, c, "PD", ClientManager::getInstance()->getMyPID().toBase32());
- addParam(lastInfoMap, c, "NI", settings.getNick());
- addParam(lastInfoMap, c, "DE", settings.getDescription());
+ addParam(lastInfoMap, c, "NI", get(Nick));
+ addParam(lastInfoMap, c, "DE", get(Description));
addParam(lastInfoMap, c, "SL", Util::toString(SETTING(SLOTS)));
addParam(lastInfoMap, c, "FS", Util::toString(UploadManager::getInstance()->getFreeSlots()));
addParam(lastInfoMap, c, "SS", ShareManager::getInstance()->getShareSizeString());
addParam(lastInfoMap, c, "SF", Util::toString(ShareManager::getInstance()->getSharedFiles()));
- addParam(lastInfoMap, c, "EM", settings.getEmail());
+ addParam(lastInfoMap, c, "EM", get(Email));
addParam(lastInfoMap, c, "HN", Util::toString(counts[COUNT_NORMAL]));
addParam(lastInfoMap, c, "HR", Util::toString(counts[COUNT_REGISTERED]));
addParam(lastInfoMap, c, "HO", Util::toString(counts[COUNT_OP]));
=== modified file 'dcpp/Client.cpp'
--- dcpp/Client.cpp 2012-05-23 22:05:22 +0000
+++ dcpp/Client.cpp 2012-05-24 17:47:25 +0000
@@ -71,27 +71,27 @@
/// @todo update the nick in ADC hubs?
string prevNick;
if(!updateNick)
- prevNick = settings.getNick();
+ prevNick = get(Nick);
- settings = SettingsManager::getInstance()->getHubSettings();
+ *static_cast<HubSettings*>(this) = SettingsManager::getInstance()->getHubSettings();
auto fav = FavoriteManager::getInstance()->getFavoriteHubEntry(getHubUrl());
if(fav) {
- FavoriteManager::getInstance()->mergeHubSettings(*fav, settings);
+ FavoriteManager::getInstance()->mergeHubSettings(*fav, *this);
if(!fav->getPassword().empty())
setPassword(fav->getPassword());
}
if(updateNick)
- checkNick(settings.nick);
+ checkNick(get(Nick));
else
- settings.setNick(prevNick);
+ get(Nick) = prevNick;
}
const string& Client::getUserIp() const {
- if(!settings.getUserIp().empty()) {
- return settings.getUserIp();
+ if(!get(UserIp).empty()) {
+ return get(UserIp);
}
return CONNSETTING(EXTERNAL_IP);
}
=== modified file 'dcpp/Client.h'
--- dcpp/Client.h 2012-05-23 22:05:22 +0000
+++ dcpp/Client.h 2012-05-24 17:47:25 +0000
@@ -34,7 +34,12 @@
namespace dcpp {
/** Yes, this should probably be called a Hub */
-class Client : public Speaker<ClientListener>, public BufferedSocketListener, protected TimerManagerListener {
+class Client :
+ public Speaker<ClientListener>,
+ public BufferedSocketListener,
+ protected TimerManagerListener,
+ public HubSettings
+{
public:
virtual void connect();
virtual void disconnect(bool graceless);
@@ -85,8 +90,6 @@
const string& getHubUrl() const { return hubUrl; }
- HubSettings settings;
-
GETSET(Identity, myIdentity, MyIdentity);
GETSET(Identity, hubIdentity, HubIdentity);
=== modified file 'dcpp/HubSettings.cpp'
--- dcpp/HubSettings.cpp 2012-05-23 22:05:22 +0000
+++ dcpp/HubSettings.cpp 2012-05-24 17:47:25 +0000
@@ -21,31 +21,69 @@
namespace dcpp {
+const string HubSettings::stringNames[HubStrLast - HubStrFirst] = {
+ "Nick", "UserDescription", "Email", "UserIp" // not "Description" for compat with prev fav hub lists
+};
+const string HubSettings::boolNames[HubBoolLast - HubBoolFirst] = {
+ "ShowJoins", "FavShowJoins"
+};
+
+HubSettings::HubSettings () {
+ // tribools default to false; init them to an indeterminate value.
+ for(auto& setting: bools) {
+ setting = indeterminate;
+ }
+}
+
+const string& HubSettings::get(HubStrSetting setting) const {
+ return strings[setting - HubStrFirst];
+}
+
+const tribool& HubSettings::get(HubBoolSetting setting) const {
+ return bools[setting - HubBoolFirst];
+}
+
+string& HubSettings::get(HubStrSetting setting) {
+ return strings[setting - HubStrFirst];
+}
+
+tribool& HubSettings::get(HubBoolSetting setting) {
+ return bools[setting - HubBoolFirst];
+}
+
void HubSettings::merge(const HubSettings& sub) {
- if(!sub.nick.empty()) { nick = sub.nick; }
- if(!sub.description.empty()) { description = sub.description; }
- if(!sub.email.empty()) { email = sub.email; }
- if(!sub.userIp.empty()) { userIp = sub.userIp; }
- if(!indeterminate(sub.showJoins)) { showJoins = sub.showJoins; }
- if(!indeterminate(sub.favShowJoins)) { favShowJoins = sub.favShowJoins; }
+ for(uint8_t i = 0; i < HubStrLast - HubStrFirst; ++i) {
+ if(!sub.strings[i].empty()) {
+ strings[i] = sub.strings[i];
+ }
+ }
+ for(uint8_t i = 0; i < HubBoolLast - HubBoolFirst; ++i) {
+ if(!indeterminate(sub.bools[i])) {
+ bools[i] = sub.bools[i];
+ }
+ }
}
void HubSettings::load(SimpleXML& xml) {
- nick = xml.getChildAttrib("Nick");
- description = xml.getChildAttrib("UserDescription"); // not "Description" for compat with prev fav hub lists
- email = xml.getChildAttrib("Email");
- userIp = xml.getChildAttrib("UserIp");
- showJoins = to3bool(xml.getIntChildAttrib("ShowJoins"));
- favShowJoins = to3bool(xml.getIntChildAttrib("FavShowJoins"));
+ for(uint8_t i = 0; i < HubStrLast - HubStrFirst; ++i) {
+ strings[i] = xml.getChildAttrib(stringNames[i]);
+ }
+ for(uint8_t i = 0; i < HubBoolLast - HubBoolFirst; ++i) {
+ bools[i] = to3bool(xml.getIntChildAttrib(boolNames[i]));
+ }
}
void HubSettings::save(SimpleXML& xml) const {
- if(!nick.empty()) { xml.addChildAttrib("Nick", nick); }
- if(!description.empty()) { xml.addChildAttrib("UserDescription", description); }
- if(!email.empty()) { xml.addChildAttrib("Email", email); }
- if(!userIp.empty()) { xml.addChildAttrib("UserIp", userIp); }
- if(!indeterminate(showJoins)) { xml.addChildAttrib("ShowJoins", toInt(showJoins)); }
- if(!indeterminate(favShowJoins)) { xml.addChildAttrib("FavShowJoins", toInt(favShowJoins)); }
+ for(uint8_t i = 0; i < HubStrLast - HubStrFirst; ++i) {
+ if(!strings[i].empty()) {
+ xml.addChildAttrib(stringNames[i], strings[i]);
+ }
+ }
+ for(uint8_t i = 0; i < HubBoolLast - HubBoolFirst; ++i) {
+ if(!indeterminate(bools[i])) {
+ xml.addChildAttrib(boolNames[i], toInt(bools[i]));
+ }
+ }
}
} // namespace dcpp
=== modified file 'dcpp/HubSettings.h'
--- dcpp/HubSettings.h 2012-05-23 22:05:22 +0000
+++ dcpp/HubSettings.h 2012-05-24 17:47:25 +0000
@@ -21,7 +21,6 @@
#include <string>
-#include "GetSet.h"
#include "SimpleXML.h"
#include "tribool.h"
@@ -33,7 +32,34 @@
favorite hub group; per favorite hub entry. */
struct HubSettings
{
- HubSettings () : showJoins(indeterminate), favShowJoins(indeterminate) { }
+ enum HubStrSetting {
+ HubStrFirst,
+
+ Nick = HubStrFirst,
+ Description,
+ Email,
+ UserIp,
+ // don't forget to edit stringNames in HubSettings.cpp when adding a def here!
+
+ HubStrLast
+ };
+
+ enum HubBoolSetting {
+ HubBoolFirst = HubStrLast + 1,
+
+ ShowJoins = HubBoolFirst,
+ FavShowJoins,
+ // don't forget to edit boolNames in HubSettings.cpp when adding a def here!
+
+ HubBoolLast
+ };
+
+ HubSettings();
+
+ const string& get(HubStrSetting setting) const;
+ const tribool& get(HubBoolSetting setting) const;
+ string& get(HubStrSetting setting);
+ tribool& get(HubBoolSetting setting);
/** Apply a set of sub-settings that may override current ones. Strings are overridden when not
null. Tribools are overridden when not in an indeterminate state. */
@@ -42,17 +68,12 @@
void load(SimpleXML& xml);
void save(SimpleXML& xml) const;
- GETSET(string, nick, Nick);
- GETSET(string, description, Description);
- GETSET(string, email, Email);
- GETSET(string, userIp, UserIp);
-
- /* don't forget to init new tribools to indeterminate in the constructor! they default to false
- otherwise. */
- tribool showJoins;
- tribool favShowJoins;
-
- friend class Client;
+private:
+ static const string stringNames[HubStrLast - HubStrFirst];
+ static const string boolNames[HubBoolLast - HubBoolFirst];
+
+ string strings[HubStrLast - HubStrFirst];
+ tribool bools[HubBoolLast - HubBoolFirst];
};
} // namespace dcpp
=== modified file 'dcpp/NmdcHub.cpp'
--- dcpp/NmdcHub.cpp 2012-05-23 22:05:22 +0000
+++ dcpp/NmdcHub.cpp 2012-05-24 17:47:25 +0000
@@ -80,7 +80,7 @@
}
UserPtr p;
- if(aNick == settings.getNick()) {
+ if(aNick == get(Nick)) {
p = ClientManager::getInstance()->getMe();
} else {
p = ClientManager::getInstance()->getUser(aNick, getHubUrl());
@@ -555,7 +555,7 @@
}
key(CryptoManager::getInstance()->makeKey(lock));
- OnlineUser& ou = getUser(settings.getNick());
+ OnlineUser& ou = getUser(get(Nick));
validateNick(ou.getIdentity().getNick());
}
} else if(cmd == "$Hello") {
@@ -807,11 +807,11 @@
string uMin = (SETTING(MIN_UPLOAD_SPEED) == 0) ? Util::emptyString : tmp5 + Util::toString(SETTING(MIN_UPLOAD_SPEED));
string myInfoA =
- "$MyINFO $ALL " + fromUtf8(getMyNick()) + " " + fromUtf8(escape(settings.getDescription())) +
+ "$MyINFO $ALL " + fromUtf8(getMyNick()) + " " + fromUtf8(escape(get(Description))) +
tmp1 + VERSIONSTRING + tmp2 + modeChar + tmp3 + getCounts();
string myInfoB = tmp4 + Util::toString(SETTING(SLOTS));
string myInfoC = uMin +
- ">$ $" + uploadSpeed + "\x01$" + fromUtf8(escape(settings.getEmail())) + '$';
+ ">$ $" + uploadSpeed + "\x01$" + fromUtf8(escape(get(Email))) + '$';
string myInfoD = ShareManager::getInstance()->getShareSizeString() + "$|";
// we always send A and C; however, B (slots) and D (share size) can frequently change so we delay them if needed
if(lastMyInfoA != myInfoA || lastMyInfoC != myInfoC ||
=== modified file 'dcpp/SettingsManager.cpp'
--- dcpp/SettingsManager.cpp 2012-05-16 11:34:47 +0000
+++ dcpp/SettingsManager.cpp 2012-05-24 17:47:25 +0000
@@ -565,11 +565,11 @@
HubSettings SettingsManager::getHubSettings() const {
HubSettings ret;
- ret.setNick(get(NICK));
- ret.setDescription(get(DESCRIPTION));
- ret.setEmail(get(EMAIL));
- ret.showJoins = getBool(SHOW_JOINS);
- ret.favShowJoins = getBool(FAV_SHOW_JOINS);
+ ret.get(HubSettings::Nick) = get(NICK);
+ ret.get(HubSettings::Description) = get(DESCRIPTION);
+ ret.get(HubSettings::Email) = get(EMAIL);
+ ret.get(HubSettings::ShowJoins) = getBool(SHOW_JOINS);
+ ret.get(HubSettings::FavShowJoins) = getBool(FAV_SHOW_JOINS);
return ret;
}
=== modified file 'win32/FavHubGroupsDlg.cpp'
--- win32/FavHubGroupsDlg.cpp 2012-05-23 22:05:22 +0000
+++ win32/FavHubGroupsDlg.cpp 2012-05-24 17:47:25 +0000
@@ -225,12 +225,12 @@
settings = group.second;
}
edit->setText(text);
- nick->setText(Text::toT(settings.getNick()));
- description->setText(Text::toT(settings.getDescription()));
- email->setText(Text::toT(settings.getEmail()));
- userIp->setText(Text::toT(settings.getUserIp()));
- showJoins->setSelected(toInt(settings.showJoins));
- favShowJoins->setSelected(toInt(settings.favShowJoins));
+ nick->setText(Text::toT(settings.get(HubSettings::Nick)));
+ description->setText(Text::toT(settings.get(HubSettings::Description)));
+ email->setText(Text::toT(settings.get(HubSettings::Email)));
+ userIp->setText(Text::toT(settings.get(HubSettings::UserIp)));
+ showJoins->setSelected(toInt(settings.get(HubSettings::ShowJoins)));
+ favShowJoins->setSelected(toInt(settings.get(HubSettings::FavShowJoins)));
}
void FavHubGroupsDlg::handleAdd() {
@@ -286,12 +286,12 @@
HubSettings FavHubGroupsDlg::getSettings() const {
HubSettings settings;
- settings.setNick(Text::fromT(nick->getText()));
- settings.setDescription(Text::fromT(description->getText()));
- settings.setEmail(Text::fromT(email->getText()));
- settings.setUserIp(Text::fromT(userIp->getText()));
- settings.showJoins = to3bool(showJoins->getSelected());
- settings.favShowJoins = to3bool(favShowJoins->getSelected());
+ settings.get(HubSettings::Nick) = Text::fromT(nick->getText());
+ settings.get(HubSettings::Description) = Text::fromT(description->getText());
+ settings.get(HubSettings::Email) = Text::fromT(email->getText());
+ settings.get(HubSettings::UserIp) = Text::fromT(userIp->getText());
+ settings.get(HubSettings::ShowJoins) = to3bool(showJoins->getSelected());
+ settings.get(HubSettings::FavShowJoins) = to3bool(favShowJoins->getSelected());
return settings;
}
=== modified file 'win32/FavHubProperties.cpp'
--- win32/FavHubProperties.cpp 2012-05-23 22:05:22 +0000
+++ win32/FavHubProperties.cpp 2012-05-24 17:47:25 +0000
@@ -99,7 +99,7 @@
cur->addChild(Label::Seed(T_("Nick")))->setHelpId(IDH_FAVORITE_HUB_NICK);
nick = cur->addChild(WinUtil::Seeds::Dialog::textBox);
- nick->setText(Text::toT(entry->getNick()));
+ nick->setText(Text::toT(entry->get(HubSettings::Nick)));
nick->setHelpId(IDH_FAVORITE_HUB_NICK);
WinUtil::preventSpaces(nick);
@@ -112,17 +112,17 @@
cur->addChild(Label::Seed(T_("Description")))->setHelpId(IDH_FAVORITE_HUB_USER_DESC);
description = cur->addChild(WinUtil::Seeds::Dialog::textBox);
- description->setText(Text::toT(entry->getDescription()));
+ description->setText(Text::toT(entry->get(HubSettings::Description)));
description->setHelpId(IDH_FAVORITE_HUB_USER_DESC);
cur->addChild(Label::Seed(T_("Email")))->setHelpId(IDH_FAVORITE_HUB_EMAIL);
email = cur->addChild(WinUtil::Seeds::Dialog::textBox);
- email->setText(Text::toT(entry->getEmail()));
+ email->setText(Text::toT(entry->get(HubSettings::Email)));
email->setHelpId(IDH_FAVORITE_HUB_EMAIL);
cur->addChild(Label::Seed(T_("External / WAN IP")))->setHelpId(IDH_FAVORITE_HUB_USER_IP);
userIp = cur->addChild(WinUtil::Seeds::Dialog::textBox);
- userIp->setText(Text::toT(entry->getUserIp()));
+ userIp->setText(Text::toT(entry->get(HubSettings::UserIp)));
userIp->setHelpId(IDH_FAVORITE_HUB_USER_IP);
WinUtil::preventSpaces(userIp);
}
@@ -136,12 +136,12 @@
cur->addChild(Label::Seed(T_("Show joins / parts in chat by default")));
showJoins = cur->addChild(WinUtil::Seeds::Dialog::comboBox);
WinUtil::fillTriboolCombo(showJoins);
- showJoins->setSelected(toInt(entry->showJoins));
+ showJoins->setSelected(toInt(entry->get(HubSettings::ShowJoins)));
cur->addChild(Label::Seed(T_("Only show joins / parts for favorite users")));
favShowJoins = cur->addChild(WinUtil::Seeds::Dialog::comboBox);
WinUtil::fillTriboolCombo(favShowJoins);
- favShowJoins->setSelected(toInt(entry->favShowJoins));
+ favShowJoins->setSelected(toInt(entry->get(HubSettings::FavShowJoins)));
}
{
@@ -184,13 +184,13 @@
entry->setServer(Text::fromT(addressText));
entry->setName(Text::fromT(name->getText()));
entry->setHubDescription(Text::fromT(hubDescription->getText()));
- entry->setNick(Text::fromT(nick->getText()));
+ entry->get(HubSettings::Nick) = Text::fromT(nick->getText());
entry->setPassword(Text::fromT(password->getText()));
- entry->setDescription(Text::fromT(description->getText()));
- entry->setEmail(Text::fromT(email->getText()));
- entry->setUserIp(Text::fromT(userIp->getText()));
- entry->showJoins = to3bool(showJoins->getSelected());
- entry->favShowJoins = to3bool(favShowJoins->getSelected());
+ entry->get(HubSettings::Description) = Text::fromT(description->getText());
+ entry->get(HubSettings::Email) = Text::fromT(email->getText());
+ entry->get(HubSettings::UserIp) = Text::fromT(userIp->getText());
+ entry->get(HubSettings::ShowJoins) = to3bool(showJoins->getSelected());
+ entry->get(HubSettings::FavShowJoins) = to3bool(favShowJoins->getSelected());
entry->setGroup(Text::fromT(groups->getText()));
FavoriteManager::getInstance()->save();
endDialog(IDOK);
=== modified file 'win32/FavHubsFrame.cpp'
--- win32/FavHubsFrame.cpp 2012-05-15 23:26:22 +0000
+++ win32/FavHubsFrame.cpp 2012-05-24 17:47:25 +0000
@@ -405,10 +405,10 @@
TStringList l;
l.push_back(Text::toT(entry->getName()));
l.push_back(Text::toT(entry->getHubDescription()));
- l.push_back(Text::toT(entry->getNick()));
+ l.push_back(Text::toT(entry->get(HubSettings::Nick)));
l.emplace_back(entry->getPassword().size(), '*');
l.push_back(Text::toT(entry->getServer()));
- l.push_back(Text::toT(entry->getDescription()));
+ l.push_back(Text::toT(entry->get(HubSettings::Description)));
l.push_back(Text::toT(group));
hubs->insert(l, reinterpret_cast<LPARAM>(entry), index);
=== modified file 'win32/HubFrame.cpp'
--- win32/HubFrame.cpp 2012-05-16 11:34:47 +0000
+++ win32/HubFrame.cpp 2012-05-24 17:47:25 +0000
@@ -408,15 +408,15 @@
client->password(Text::fromT(param));
waitingForPW = false;
} else if( Util::stricmp(cmd.c_str(), _T("showjoins")) == 0 ) {
- client->settings.showJoins = !client->settings.showJoins;
- if(client->settings.showJoins) {
+ client->get(HubSettings::ShowJoins) = !client->get(HubSettings::ShowJoins);
+ if(client->get(HubSettings::ShowJoins)) {
addStatus(T_("Join/part showing on"));
} else {
addStatus(T_("Join/part showing off"));
}
} else if( Util::stricmp(cmd.c_str(), _T("favshowjoins")) == 0 ) {
- client->settings.favShowJoins = !client->settings.favShowJoins;
- if(client->settings.favShowJoins) {
+ client->get(HubSettings::FavShowJoins) = !client->get(HubSettings::FavShowJoins);
+ if(client->get(HubSettings::FavShowJoins)) {
addStatus(T_("Join/part of favorite users showing on"));
} else {
addStatus(T_("Join/part of favorite users showing off"));
@@ -570,14 +570,14 @@
} else if(i.first == UPDATE_USER_JOIN) {
UserTask& u = static_cast<UserTask&>(*i.second);
if(updateUser(u)) {
- if(client->settings.showJoins || (client->settings.favShowJoins && FavoriteManager::getInstance()->isFavoriteUser(u.user))) {
+ if(client->get(HubSettings::ShowJoins) || (client->get(HubSettings::FavShowJoins) && FavoriteManager::getInstance()->isFavoriteUser(u.user))) {
addStatus(str(TF_("Joins: %1%") % Text::toT(u.identity.getNick())));
}
}
} else if(i.first == REMOVE_USER) {
UserTask& u = static_cast<UserTask&>(*i.second);
removeUser(u.user);
- if(client->settings.showJoins || (client->settings.favShowJoins && FavoriteManager::getInstance()->isFavoriteUser(u.user))) {
+ if(client->get(HubSettings::ShowJoins) || (client->get(HubSettings::FavShowJoins) && FavoriteManager::getInstance()->isFavoriteUser(u.user))) {
addStatus(str(TF_("Parts: %1%") % Text::toT(u.identity.getNick())));
}
}