diff options
| author | dartraiden <wowemuh@gmail.com> | 2019-07-21 19:59:18 +0300 |
|---|---|---|
| committer | dartraiden <wowemuh@gmail.com> | 2019-07-21 19:59:18 +0300 |
| commit | b078dfb78c89aea87cd422eae52694738e473cf3 (patch) | |
| tree | ca896e82a8a5ce81f80d041f4aee7fdeeb007162 /src | |
| parent | ee7e29d02e94e969c1154515cd0c408c591a2414 (diff) | |
Restore "Free for chat" status support (fixes #1963)
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/stdautoaway/src/autoaway.cpp | 4 | ||||
| -rw-r--r-- | src/core/stdaway/src/sendmsg.cpp | 4 | ||||
| -rw-r--r-- | src/core/stdclist/src/clcopts.cpp | 4 | ||||
| -rw-r--r-- | src/core/stdclist/src/contact.cpp | 1 | ||||
| -rw-r--r-- | src/core/stdmsg/src/msgoptions.cpp | 3 | ||||
| -rw-r--r-- | src/core/stdmsg/src/msgs.cpp | 1 | ||||
| -rw-r--r-- | src/core/stduseronline/src/useronline.cpp | 2 | ||||
| -rw-r--r-- | src/icons/proto_metacontacts/res/FFC.ico | bin | 0 -> 5430 bytes | |||
| -rw-r--r-- | src/icons/proto_metacontacts/res/Proto_MetaContacts.rc | 1 | ||||
| -rw-r--r-- | src/icons/proto_metacontacts/src/resource.h | 1 | ||||
| -rw-r--r-- | src/mir_app/res/resource.rc | 3 | ||||
| -rw-r--r-- | src/mir_app/src/clcidents.cpp | 1 | ||||
| -rw-r--r-- | src/mir_app/src/clcutils.cpp | 1 | ||||
| -rw-r--r-- | src/mir_app/src/clistmod.cpp | 3 | ||||
| -rw-r--r-- | src/mir_app/src/menu_clist.cpp | 1 | ||||
| -rw-r--r-- | src/mir_app/src/meta_services.cpp | 6 | ||||
| -rw-r--r-- | src/mir_app/src/meta_utils.cpp | 11 | ||||
| -rw-r--r-- | src/mir_app/src/skinicons.cpp | 3 |
18 files changed, 34 insertions, 16 deletions
diff --git a/src/core/stdautoaway/src/autoaway.cpp b/src/core/stdautoaway/src/autoaway.cpp index 6511746e2a..40f9c2779d 100644 --- a/src/core/stdautoaway/src/autoaway.cpp +++ b/src/core/stdautoaway/src/autoaway.cpp @@ -75,7 +75,7 @@ static int AutoAwayEvent(WPARAM, LPARAM lParam) status = ID_STATUS_AWAY;
if (lParam & IDF_ISIDLE) {
- if (pa->iRealStatus != ID_STATUS_ONLINE) {
+ if (pa->iRealStatus != ID_STATUS_ONLINE && pa->iRealStatus != ID_STATUS_FREECHAT) {
Netlib_Logf(0, "%s: '%s' isn't online (%d), skipping", MODULENAME, pa->szModuleName, pa->iRealStatus);
continue;
}
@@ -87,7 +87,7 @@ static int AutoAwayEvent(WPARAM, LPARAM lParam) }
else {
int oldstatus = g_plugin.getWord(pa->szModuleName, 0);
- if (oldstatus != ID_STATUS_ONLINE) {
+ if (oldstatus != ID_STATUS_ONLINE && oldstatus != ID_STATUS_FREECHAT) {
Netlib_Logf(0, "%s: '%s' wasn't online (%d), skipping", MODULENAME, pa->szModuleName, oldstatus);
continue;
}
diff --git a/src/core/stdaway/src/sendmsg.cpp b/src/core/stdaway/src/sendmsg.cpp index bd4b8440ee..bd6e9c6446 100644 --- a/src/core/stdaway/src/sendmsg.cpp +++ b/src/core/stdaway/src/sendmsg.cpp @@ -34,6 +34,7 @@ static const wchar_t* GetDefaultMessage(int status) case ID_STATUS_NA: return TranslateT("Give it up, I'm not in!");
case ID_STATUS_OCCUPIED: return TranslateT("Not right now.");
case ID_STATUS_DND: return TranslateT("Give a guy some peace, would ya?");
+ case ID_STATUS_FREECHAT: return TranslateT("I'm a chatbot!");
case ID_STATUS_ONLINE: return TranslateT("Yep, I'm here.");
case ID_STATUS_OFFLINE: return TranslateT("Nope, not here.");
case ID_STATUS_INVISIBLE: return TranslateT("I'm hiding from the mafia.");
@@ -52,6 +53,7 @@ static const char* StatusModeToDbSetting(int status, const char *suffix) case ID_STATUS_NA: prefix = "Na"; break;
case ID_STATUS_DND: prefix = "Dnd"; break;
case ID_STATUS_OCCUPIED: prefix = "Occupied"; break;
+ case ID_STATUS_FREECHAT: prefix = "FreeChat"; break;
case ID_STATUS_ONLINE: prefix = "On"; break;
case ID_STATUS_OFFLINE: prefix = "Off"; break;
case ID_STATUS_INVISIBLE: prefix = "Inv"; break;
@@ -334,7 +336,7 @@ static int StatusModeChange(WPARAM wParam, LPARAM lParam) static const int statusModes[] =
{
ID_STATUS_OFFLINE, ID_STATUS_ONLINE, ID_STATUS_AWAY, ID_STATUS_NA, ID_STATUS_OCCUPIED, ID_STATUS_DND,
- ID_STATUS_INVISIBLE, ID_STATUS_IDLE
+ ID_STATUS_FREECHAT, ID_STATUS_INVISIBLE, ID_STATUS_IDLE
};
struct AwayMsgInfo
diff --git a/src/core/stdclist/src/clcopts.cpp b/src/core/stdclist/src/clcopts.cpp index c9070e91f3..ee4c3860f2 100644 --- a/src/core/stdclist/src/clcopts.cpp +++ b/src/core/stdclist/src/clcopts.cpp @@ -66,6 +66,7 @@ static const struct CheckBoxValues_t greyoutValues[] = { PF2_LONGAWAY, LPGENW("Not available") },
{ PF2_LIGHTDND, LPGENW("Occupied") },
{ PF2_HEAVYDND, LPGENW("Do not disturb")},
+ { PF2_FREECHAT, LPGENW("Free for chat") },
{ PF2_INVISIBLE, LPGENW("Invisible") }
};
@@ -77,7 +78,8 @@ static const struct CheckBoxValues_t offlineValues[] = { PF2_LONGAWAY, LPGENW("Not available") },
{ PF2_LIGHTDND, LPGENW("Occupied") },
{ PF2_HEAVYDND, LPGENW("Do not disturb")},
- { PF2_INVISIBLE, LPGENW("Invisible") },
+ { PF2_FREECHAT, LPGENW("Free for chat") },
+ { PF2_INVISIBLE, LPGENW("Invisible") }
};
static void FillCheckBoxTree(HWND hwndTree, const struct CheckBoxValues_t *values, int nValues, DWORD style)
diff --git a/src/core/stdclist/src/contact.cpp b/src/core/stdclist/src/contact.cpp index 3a561482d0..9b40331e2f 100644 --- a/src/core/stdclist/src/contact.cpp +++ b/src/core/stdclist/src/contact.cpp @@ -38,6 +38,7 @@ static statusModeOrder[] = { ID_STATUS_DND, 110 },
{ ID_STATUS_NA, 450 },
{ ID_STATUS_OCCUPIED, 100 },
+ { ID_STATUS_FREECHAT, 0 },
{ ID_STATUS_INVISIBLE, 20 }
};
diff --git a/src/core/stdmsg/src/msgoptions.cpp b/src/core/stdmsg/src/msgoptions.cpp index e4ce31045b..5d8565a7a2 100644 --- a/src/core/stdmsg/src/msgoptions.cpp +++ b/src/core/stdmsg/src/msgoptions.cpp @@ -139,7 +139,8 @@ statusValues[] = { PF2_LONGAWAY, LPGENW("Not available") },
{ PF2_LIGHTDND, LPGENW("Occupied") },
{ PF2_HEAVYDND, LPGENW("Do not disturb") },
- { PF2_INVISIBLE, LPGENW("Invisible") },
+ { PF2_FREECHAT, LPGENW("Free for chat") },
+ { PF2_INVISIBLE, LPGENW("Invisible") }
};
class COptionMainDlg : public CDlgBase
diff --git a/src/core/stdmsg/src/msgs.cpp b/src/core/stdmsg/src/msgs.cpp index e78c57968a..50c98f7a98 100644 --- a/src/core/stdmsg/src/msgs.cpp +++ b/src/core/stdmsg/src/msgs.cpp @@ -108,6 +108,7 @@ static int SRMMStatusToPf2(int status) case ID_STATUS_DND: return PF2_HEAVYDND;
case ID_STATUS_NA: return PF2_LONGAWAY;
case ID_STATUS_OCCUPIED: return PF2_LIGHTDND;
+ case ID_STATUS_FREECHAT: return PF2_FREECHAT;
case ID_STATUS_INVISIBLE: return PF2_INVISIBLE;
case ID_STATUS_OFFLINE: return MODEF_OFFLINE;
}
diff --git a/src/core/stduseronline/src/useronline.cpp b/src/core/stduseronline/src/useronline.cpp index e1de0b8f03..1c3a6d3640 100644 --- a/src/core/stduseronline/src/useronline.cpp +++ b/src/core/stduseronline/src/useronline.cpp @@ -46,7 +46,7 @@ static int UserOnlineSettingChanged(WPARAM hContact, LPARAM lParam) }
}
- if (newStatus == ID_STATUS_ONLINE && oldStatus != ID_STATUS_ONLINE) {
+ if ((newStatus == ID_STATUS_ONLINE || newStatus == ID_STATUS_FREECHAT) && oldStatus != ID_STATUS_ONLINE && oldStatus != ID_STATUS_FREECHAT) {
DWORD ticked = g_plugin.getDword(cws->szModule, GetTickCount());
// only play the sound (or show event) if this event happens at least 10 secs after the proto went from offline
if (GetTickCount() - ticked > (1000 * 10)) {
diff --git a/src/icons/proto_metacontacts/res/FFC.ico b/src/icons/proto_metacontacts/res/FFC.ico Binary files differnew file mode 100644 index 0000000000..94b2d4f21f --- /dev/null +++ b/src/icons/proto_metacontacts/res/FFC.ico diff --git a/src/icons/proto_metacontacts/res/Proto_MetaContacts.rc b/src/icons/proto_metacontacts/res/Proto_MetaContacts.rc index e39cda7890..50e13a3a29 100644 --- a/src/icons/proto_metacontacts/res/Proto_MetaContacts.rc +++ b/src/icons/proto_metacontacts/res/Proto_MetaContacts.rc @@ -58,6 +58,7 @@ IDI_ICON4 ICON "Invisible.ico" IDI_ICON5 ICON "NA.ico"
IDI_ICON6 ICON "DND.ico"
IDI_ICON7 ICON "Occupied.ico"
+IDI_ICON8 ICON "FFC.ico"
#endif // Russian (Russia) resources
/////////////////////////////////////////////////////////////////////////////
diff --git a/src/icons/proto_metacontacts/src/resource.h b/src/icons/proto_metacontacts/src/resource.h index 5f167b1511..d90362ca11 100644 --- a/src/icons/proto_metacontacts/src/resource.h +++ b/src/icons/proto_metacontacts/src/resource.h @@ -5,6 +5,7 @@ #define IDI_ICON2 104
#define IDI_ICON1 105
#define IDI_ICON3 128
+#define IDI_ICON8 129
#define IDI_ICON4 130
#define IDI_ICON5 131
#define IDI_ICON6 158
diff --git a/src/mir_app/res/resource.rc b/src/mir_app/res/resource.rc index db270fefd9..90b54f150f 100644 --- a/src/mir_app/res/resource.rc +++ b/src/mir_app/res/resource.rc @@ -1310,7 +1310,8 @@ BEGIN MENUITEM "&Not available\tCtrl+3", ID_STATUS_NA
MENUITEM "Occ&upied\tCtrl+4", ID_STATUS_OCCUPIED
MENUITEM "&Do not disturb\tCtrl+5", ID_STATUS_DND
- MENUITEM "&Invisible\tCtrl+6", ID_STATUS_INVISIBLE
+ MENUITEM "&Free for chat\tCtrl+6", ID_STATUS_FREECHAT
+ MENUITEM "&Invisible\tCtrl+7", ID_STATUS_INVISIBLE
END
END
diff --git a/src/mir_app/src/clcidents.cpp b/src/mir_app/src/clcidents.cpp index 931975a599..0d4e3952b9 100644 --- a/src/mir_app/src/clcidents.cpp +++ b/src/mir_app/src/clcidents.cpp @@ -246,6 +246,7 @@ MIR_APP_DLL(int) Clist_GetGeneralizedStatus(char **szProto) int iStatusWeight;
switch (pa->iRealStatus) {
+ case ID_STATUS_FREECHAT: iStatusWeight = 110; break;
case ID_STATUS_ONLINE: iStatusWeight = 100; break;
case ID_STATUS_OCCUPIED: iStatusWeight = 60; break;
case ID_STATUS_DND: iStatusWeight = 40; break;
diff --git a/src/mir_app/src/clcutils.cpp b/src/mir_app/src/clcutils.cpp index 980a424d57..2ba762e39a 100644 --- a/src/mir_app/src/clcutils.cpp +++ b/src/mir_app/src/clcutils.cpp @@ -624,6 +624,7 @@ MIR_APP_DLL(int) Clist_ClcStatusToPf2(int status) case ID_STATUS_DND: return PF2_HEAVYDND;
case ID_STATUS_NA: return PF2_LONGAWAY;
case ID_STATUS_OCCUPIED: return PF2_LIGHTDND;
+ case ID_STATUS_FREECHAT: return PF2_FREECHAT;
case ID_STATUS_INVISIBLE: return PF2_INVISIBLE;
case ID_STATUS_OFFLINE: return MODEF_OFFLINE;
}
diff --git a/src/mir_app/src/clistmod.cpp b/src/mir_app/src/clistmod.cpp index 70a5fde409..ed2f250eb5 100644 --- a/src/mir_app/src/clistmod.cpp +++ b/src/mir_app/src/clistmod.cpp @@ -74,6 +74,9 @@ MIR_APP_DLL(wchar_t*) Clist_GetStatusModeDescription(int mode, int flags) case ID_STATUS_OCCUPIED:
descr = LPGENW("Occupied");
break;
+ case ID_STATUS_FREECHAT:
+ descr = LPGENW("Free for chat");
+ break;
case ID_STATUS_INVISIBLE:
descr = LPGENW("Invisible");
break;
diff --git a/src/mir_app/src/menu_clist.cpp b/src/mir_app/src/menu_clist.cpp index e266b712d5..181df23c64 100644 --- a/src/mir_app/src/menu_clist.cpp +++ b/src/mir_app/src/menu_clist.cpp @@ -63,6 +63,7 @@ MStatus g_statuses[MAX_STATUS_COUNT] = { ID_STATUS_NA, SKINICON_STATUS_NA, PF2_LONGAWAY },
{ ID_STATUS_OCCUPIED, SKINICON_STATUS_OCCUPIED, PF2_LIGHTDND },
{ ID_STATUS_DND, SKINICON_STATUS_DND, PF2_HEAVYDND },
+ { ID_STATUS_FREECHAT, SKINICON_STATUS_FREE4CHAT, PF2_FREECHAT },
{ ID_STATUS_INVISIBLE, SKINICON_STATUS_INVISIBLE, PF2_INVISIBLE },
};
diff --git a/src/mir_app/src/meta_services.cpp b/src/mir_app/src/meta_services.cpp index 7b89a95b1a..ad63a46862 100644 --- a/src/mir_app/src/meta_services.cpp +++ b/src/mir_app/src/meta_services.cpp @@ -56,16 +56,16 @@ INT_PTR Meta_GetCaps(WPARAM wParam, LPARAM) return PF1_IM | PF1_CHAT | PF1_FILESEND | PF1_MODEMSGRECV | PF1_NUMERICUSERID;
case PFLAGNUM_2:
- return PF2_ONLINE | PF2_INVISIBLE | PF2_SHORTAWAY | PF2_LONGAWAY | PF2_LIGHTDND | PF2_HEAVYDND;
+ return PF2_ONLINE | PF2_INVISIBLE | PF2_SHORTAWAY | PF2_LONGAWAY | PF2_LIGHTDND | PF2_HEAVYDND | PF2_FREECHAT;
case PFLAGNUM_3:
- return PF2_ONLINE | PF2_INVISIBLE | PF2_SHORTAWAY | PF2_LONGAWAY | PF2_LIGHTDND | PF2_HEAVYDND;
+ return PF2_ONLINE | PF2_INVISIBLE | PF2_SHORTAWAY | PF2_LONGAWAY | PF2_LIGHTDND | PF2_HEAVYDND | PF2_FREECHAT;
case PFLAGNUM_4:
return PF4_SUPPORTTYPING | PF4_AVATARS;
case PFLAGNUM_5:
- return PF2_INVISIBLE | PF2_SHORTAWAY | PF2_LONGAWAY | PF2_LIGHTDND | PF2_HEAVYDND;
+ return PF2_INVISIBLE | PF2_SHORTAWAY | PF2_LONGAWAY | PF2_LIGHTDND | PF2_HEAVYDND | PF2_FREECHAT;
case PFLAG_MAXLENOFMESSAGE:
return 2000;
diff --git a/src/mir_app/src/meta_utils.cpp b/src/mir_app/src/meta_utils.cpp index 2b7ccab6a2..75e02fa608 100644 --- a/src/mir_app/src/meta_utils.cpp +++ b/src/mir_app/src/meta_utils.cpp @@ -209,11 +209,12 @@ MCONTACT Meta_GetMostOnline(DBCachedContact *cc) static int GetStatusPriority(int status)
{
switch (status) {
- case ID_STATUS_AWAY: return 1;
- case ID_STATUS_OCCUPIED: return 2;
- case ID_STATUS_NA: return 3;
- case ID_STATUS_DND: return 4;
- case ID_STATUS_OFFLINE: return 5;
+ case ID_STATUS_FREECHAT: return 1;
+ case ID_STATUS_AWAY: return 2;
+ case ID_STATUS_OCCUPIED: return 3;
+ case ID_STATUS_NA: return 4;
+ case ID_STATUS_DND: return 5;
+ case ID_STATUS_OFFLINE: return 6;
}
return 0;
diff --git a/src/mir_app/src/skinicons.cpp b/src/mir_app/src/skinicons.cpp index b5ecd34c88..8f7f7c7624 100644 --- a/src/mir_app/src/skinicons.cpp +++ b/src/mir_app/src/skinicons.cpp @@ -108,7 +108,8 @@ static struct StandardIconDescription statusIcons[] = { ID_STATUS_NA, LPGEN("Not available"), -IDI_NA, PF2_LONGAWAY },
{ ID_STATUS_OCCUPIED, LPGEN("Occupied"), -IDI_OCCUPIED, PF2_LIGHTDND },
{ ID_STATUS_DND, LPGEN("Do not disturb"), -IDI_DND, PF2_HEAVYDND },
- { ID_STATUS_INVISIBLE, LPGEN("Invisible"), -IDI_INVISIBLE, PF2_INVISIBLE },
+ { ID_STATUS_FREECHAT, LPGEN("Free for chat"), -IDI_FREE4CHAT, PF2_FREECHAT },
+ { ID_STATUS_INVISIBLE, LPGEN("Invisible"), -IDI_INVISIBLE, PF2_INVISIBLE }
};
const char mainIconsFmt[] = "core_main_";
|
