diff options
author | George Hazan <ghazan@miranda.im> | 2022-05-18 14:57:07 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2022-05-18 14:57:07 +0300 |
commit | c532dd787e249378642546173de437bac5a6eed6 (patch) | |
tree | f559de8901c703a6005679511004ec01fecc90e5 /src | |
parent | 5ba7647062ed142af980f9f06349c1e27d52fd9b (diff) | |
parent | 05e766ad3cabf6bb637e647a6396b9637a8c4cb2 (diff) |
Merge branch 'master' of https://github.com/miranda-ng/miranda-ng
Diffstat (limited to 'src')
-rw-r--r-- | src/mir_app/mir_app.mk | 25 | ||||
-rw-r--r-- | src/mir_app/mir_app.project | 2 | ||||
-rw-r--r-- | src/mir_app/src/CMPluginBase.cpp | 2 | ||||
-rw-r--r-- | src/mir_app/src/addcontact.cpp | 2 | ||||
-rw-r--r-- | src/mir_app/src/auth.cpp | 102 | ||||
-rw-r--r-- | src/mir_app/src/db_ini.cpp | 94 | ||||
-rw-r--r-- | src/mir_app/src/miranda.cpp | 139 | ||||
-rw-r--r-- | src/mir_app/src/miranda.h | 3 | ||||
-rw-r--r-- | src/mir_app/src/stdafx.h | 2 | ||||
-rw-r--r-- | src/mir_core/src/Linux/CCtrlBase.cpp | 2 | ||||
-rw-r--r-- | src/mir_core/src/Linux/CCtrlButton.cpp | 2 | ||||
-rw-r--r-- | src/mir_core/src/Linux/CCtrlCheck.cpp | 2 | ||||
-rw-r--r-- | src/mir_core/src/Linux/CCtrlCombo.cpp | 2 | ||||
-rw-r--r-- | src/mir_core/src/Linux/CCtrlEdit.cpp | 2 | ||||
-rw-r--r-- | src/mir_core/src/Linux/CDlgBase.cpp | 8 |
15 files changed, 222 insertions, 167 deletions
diff --git a/src/mir_app/mir_app.mk b/src/mir_app/mir_app.mk index 5163e32169..e46fe270da 100644 --- a/src/mir_app/mir_app.mk +++ b/src/mir_app/mir_app.mk @@ -14,7 +14,7 @@ CurrentFileName := CurrentFilePath := CurrentFileFullPath := User :=George Hazan -Date :=10/05/22 +Date :=17/05/22 CodeLitePath :=/home/ghazan/.codelite MakeDirCommand :=mkdir -p LinkerName :=g++ @@ -62,7 +62,8 @@ AS := as ## User defined environment variables ## CodeLiteDir:=/usr/share/codelite -Objects0=$(IntermediateDirectory)/src_miranda.cpp$(ObjectSuffix) $(IntermediateDirectory)/src_database.cpp$(ObjectSuffix) $(IntermediateDirectory)/src_db_intf.cpp$(ObjectSuffix) $(IntermediateDirectory)/src_db_events.cpp$(ObjectSuffix) $(IntermediateDirectory)/src_contact.cpp$(ObjectSuffix) $(IntermediateDirectory)/src_CMPluginBase.cpp$(ObjectSuffix) $(IntermediateDirectory)/src_addcontact.cpp$(ObjectSuffix) $(IntermediateDirectory)/src_stdafx.cxx$(ObjectSuffix) +Objects0=$(IntermediateDirectory)/src_db_ini.cpp$(ObjectSuffix) $(IntermediateDirectory)/src_auth.cpp$(ObjectSuffix) $(IntermediateDirectory)/src_miranda.cpp$(ObjectSuffix) $(IntermediateDirectory)/src_db_intf.cpp$(ObjectSuffix) $(IntermediateDirectory)/src_db_events.cpp$(ObjectSuffix) $(IntermediateDirectory)/src_database.cpp$(ObjectSuffix) $(IntermediateDirectory)/src_contact.cpp$(ObjectSuffix) $(IntermediateDirectory)/src_CMPluginBase.cpp$(ObjectSuffix) $(IntermediateDirectory)/src_addcontact.cpp$(ObjectSuffix) $(IntermediateDirectory)/src_stdafx.cxx$(ObjectSuffix) \ + @@ -94,16 +95,21 @@ PreBuild: ## ## Objects ## +$(IntermediateDirectory)/src_db_ini.cpp$(ObjectSuffix): src/db_ini.cpp + $(CXX) $(IncludePCH) $(SourceSwitch) "/home/ghazan/miranda-ng/src/mir_app/src/db_ini.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/src_db_ini.cpp$(ObjectSuffix) $(IncludePath) +$(IntermediateDirectory)/src_db_ini.cpp$(PreprocessSuffix): src/db_ini.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/src_db_ini.cpp$(PreprocessSuffix) src/db_ini.cpp + +$(IntermediateDirectory)/src_auth.cpp$(ObjectSuffix): src/auth.cpp + $(CXX) $(IncludePCH) $(SourceSwitch) "/home/ghazan/miranda-ng/src/mir_app/src/auth.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/src_auth.cpp$(ObjectSuffix) $(IncludePath) +$(IntermediateDirectory)/src_auth.cpp$(PreprocessSuffix): src/auth.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/src_auth.cpp$(PreprocessSuffix) src/auth.cpp + $(IntermediateDirectory)/src_miranda.cpp$(ObjectSuffix): src/miranda.cpp $(CXX) $(IncludePCH) $(SourceSwitch) "/home/ghazan/miranda-ng/src/mir_app/src/miranda.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/src_miranda.cpp$(ObjectSuffix) $(IncludePath) $(IntermediateDirectory)/src_miranda.cpp$(PreprocessSuffix): src/miranda.cpp $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/src_miranda.cpp$(PreprocessSuffix) src/miranda.cpp -$(IntermediateDirectory)/src_database.cpp$(ObjectSuffix): src/database.cpp - $(CXX) $(IncludePCH) $(SourceSwitch) "/home/ghazan/miranda-ng/src/mir_app/src/database.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/src_database.cpp$(ObjectSuffix) $(IncludePath) -$(IntermediateDirectory)/src_database.cpp$(PreprocessSuffix): src/database.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/src_database.cpp$(PreprocessSuffix) src/database.cpp - $(IntermediateDirectory)/src_db_intf.cpp$(ObjectSuffix): src/db_intf.cpp $(CXX) $(IncludePCH) $(SourceSwitch) "/home/ghazan/miranda-ng/src/mir_app/src/db_intf.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/src_db_intf.cpp$(ObjectSuffix) $(IncludePath) $(IntermediateDirectory)/src_db_intf.cpp$(PreprocessSuffix): src/db_intf.cpp @@ -114,6 +120,11 @@ $(IntermediateDirectory)/src_db_events.cpp$(ObjectSuffix): src/db_events.cpp $(IntermediateDirectory)/src_db_events.cpp$(PreprocessSuffix): src/db_events.cpp $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/src_db_events.cpp$(PreprocessSuffix) src/db_events.cpp +$(IntermediateDirectory)/src_database.cpp$(ObjectSuffix): src/database.cpp + $(CXX) $(IncludePCH) $(SourceSwitch) "/home/ghazan/miranda-ng/src/mir_app/src/database.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/src_database.cpp$(ObjectSuffix) $(IncludePath) +$(IntermediateDirectory)/src_database.cpp$(PreprocessSuffix): src/database.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/src_database.cpp$(PreprocessSuffix) src/database.cpp + $(IntermediateDirectory)/src_contact.cpp$(ObjectSuffix): src/contact.cpp $(CXX) $(IncludePCH) $(SourceSwitch) "/home/ghazan/miranda-ng/src/mir_app/src/contact.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/src_contact.cpp$(ObjectSuffix) $(IncludePath) $(IntermediateDirectory)/src_contact.cpp$(PreprocessSuffix): src/contact.cpp diff --git a/src/mir_app/mir_app.project b/src/mir_app/mir_app.project index 121dc016a2..74517f991d 100644 --- a/src/mir_app/mir_app.project +++ b/src/mir_app/mir_app.project @@ -3,6 +3,8 @@ <Description/> <Dependencies/> <VirtualDirectory Name="src"> + <File Name="src/db_ini.cpp"/> + <File Name="src/auth.cpp"/> <File Name="src/miranda.cpp"/> <File Name="src/database.cpp"/> <File Name="src/db_intf.cpp"/> diff --git a/src/mir_app/src/CMPluginBase.cpp b/src/mir_app/src/CMPluginBase.cpp index d22d410f41..3561132c44 100644 --- a/src/mir_app/src/CMPluginBase.cpp +++ b/src/mir_app/src/CMPluginBase.cpp @@ -82,7 +82,7 @@ MIR_APP_DLL(int) IsPluginLoaded(const MUUID &uuid) return false; } -char* GetPluginNameByInstance(HINSTANCE hInst) +const char* GetPluginNameByInstance(HINSTANCE hInst) { HINSTANCE boo[2] = { 0, hInst }; CMPluginBase *pPlugin = g_arPlugins.find((CMPluginBase*)&boo); diff --git a/src/mir_app/src/addcontact.cpp b/src/mir_app/src/addcontact.cpp index 0e97ec518d..afefeda2b4 100644 --- a/src/mir_app/src/addcontact.cpp +++ b/src/mir_app/src/addcontact.cpp @@ -182,7 +182,7 @@ MIR_APP_DLL(void) Contact_Add(MCONTACT hContact, HWND hwndParent) else (new CAddByContact(hContact))->Show();
}
-MIR_APP_DLL(void) Contact_AddByEvent(MEVENT hEvent, HWND hwndParent)
+MIR_APP_DLL(void) Contact_AddByEvent(MEVENT hEvent, MWindow hwndParent)
{
struct CAddByEvent : public CAddContactDlg
{
diff --git a/src/mir_app/src/auth.cpp b/src/mir_app/src/auth.cpp index 8c12b475ff..8518bc1a63 100644 --- a/src/mir_app/src/auth.cpp +++ b/src/mir_app/src/auth.cpp @@ -33,13 +33,19 @@ class CAuthReqDlg : public CDlgBase MCONTACT m_hContact; const char *m_szProto; + CCtrlBase fldHeader, fldReason; + CCtrlEdit edtReason; CCtrlCheck chkAdd; - CCtrlButton btnDetails, btnLater; + CCtrlButton btnAdd, btnDetails, btnLater; public: CAuthReqDlg(MEVENT hEvent) : CDlgBase(g_plugin, IDD_AUTHREQ), m_hDbEvent(hEvent), + fldHeader(this, IDC_HEADERBAR), + fldReason(this, IDC_REASON), + edtReason(this, IDC_DENYREASON), + btnAdd(this, IDC_ADD), btnLater(this, IDC_DECIDELATER), btnDetails(this, IDC_DETAILS), chkAdd(this, IDC_ADDCHECK) @@ -60,6 +66,7 @@ public: return false; m_szProto = dbei.szModule; + PROTOACCOUNT *acc = Proto_GetAccount(dbei.szModule); uint32_t uin = *(uint32_t*)dbei.pBlob; m_hContact = DbGetAuthEventContact(&dbei); @@ -69,8 +76,10 @@ public: char *email = last + mir_strlen(last) + 1; char *reason = email + mir_strlen(email) + 1; - SendMessage(m_hwnd, WM_SETICON, ICON_SMALL, CallProtoService(dbei.szModule, PS_LOADICON, PLI_PROTOCOL | PLIF_SMALL, 0)); - SendMessage(m_hwnd, WM_SETICON, ICON_BIG, CallProtoService(dbei.szModule, PS_LOADICON, PLI_PROTOCOL | PLIF_LARGE, 0)); + #ifdef _WINDOWS + SendMessage(m_hwnd, WM_SETICON, ICON_SMALL, CallProtoService(dbei.szModule, PS_LOADICON, PLI_PROTOCOL | PLIF_SMALL, 0)); + SendMessage(m_hwnd, WM_SETICON, ICON_BIG, CallProtoService(dbei.szModule, PS_LOADICON, PLI_PROTOCOL | PLIF_LARGE, 0)); + #endif ptrW lastT(dbei.flags & DBEF_UTF ? mir_utf8decodeW(last) : mir_a2u(last)); ptrW firstT(dbei.flags & DBEF_UTF ? mir_utf8decodeW(first) : mir_a2u(first)); @@ -78,43 +87,40 @@ public: ptrW emailT(dbei.flags & DBEF_UTF ? mir_utf8decodeW(email) : mir_a2u(email)); ptrW reasonT(dbei.flags & DBEF_UTF ? mir_utf8decodeW(reason) : mir_a2u(reason)); - wchar_t name[128] = L""; - int off = 0; + CMStringW wszHeader; if (firstT[0] && lastT[0]) - off = mir_snwprintf(name, L"%s %s", (wchar_t*)firstT, (wchar_t*)lastT); + wszHeader.Format(L"%s %s", (wchar_t*)firstT, (wchar_t*)lastT); else if (firstT[0]) - off = mir_snwprintf(name, L"%s", (wchar_t*)firstT); + wszHeader = firstT.get(); else if (lastT[0]) - off = mir_snwprintf(name, L"%s", (wchar_t*)lastT); + wszHeader = lastT.get(); + if (mir_wstrlen(nickT)) { - if (off) - mir_snwprintf(name + off, _countof(name) - off, L" (%s)", (wchar_t*)nickT); + if (wszHeader.IsEmpty()) + wszHeader = nickT.get(); else - wcsncpy_s(name, nickT, _TRUNCATE); + wszHeader.AppendFormat(L" %s", nickT.get()); } - if (!name[0]) - wcsncpy_s(name, TranslateT("<Unknown>"), _TRUNCATE); + if (wszHeader.IsEmpty()) + wszHeader = TranslateT("<Unknown>"); - PROTOACCOUNT *acc = Proto_GetAccount(dbei.szModule); - - wchar_t hdr[256]; if (uin && emailT[0]) - mir_snwprintf(hdr, TranslateT("%s requested authorization\n%u (%s) on %s"), name, uin, (wchar_t*)emailT, acc->tszAccountName); + wszHeader.AppendFormat(TranslateT(" requested authorization\n%u (%s) on %s"), uin, emailT.get(), acc->tszAccountName); else if (uin) - mir_snwprintf(hdr, TranslateT("%s requested authorization\n%u on %s"), name, uin, acc->tszAccountName); + wszHeader.AppendFormat(TranslateT(" requested authorization\n%u on %s"), uin, acc->tszAccountName); else - mir_snwprintf(hdr, TranslateT("%s requested authorization\n%s on %s"), name, emailT[0] ? (wchar_t*)emailT : TranslateT("(Unknown)"), acc->tszAccountName); + wszHeader.AppendFormat(TranslateT(" requested authorization\n%s on %s"), emailT[0] ? emailT.get() : TranslateT("(Unknown)"), acc->tszAccountName); + fldHeader.SetText(wszHeader); - SetDlgItemText(m_hwnd, IDC_HEADERBAR, hdr); - SetDlgItemText(m_hwnd, IDC_REASON, reasonT); + fldReason.SetText(reasonT); if (m_hContact == INVALID_CONTACT_ID || Contact_OnList(m_hContact)) - ShowWindow(GetDlgItem(m_hwnd, IDC_ADD), FALSE); + btnAdd.Hide(); - SendDlgItemMessage(m_hwnd, IDC_DENYREASON, EM_LIMITTEXT, 255, 0); + edtReason.SetMaxLength(255); if (CallProtoService(dbei.szModule, PS_GETCAPS, PFLAGNUM_4, 0) & PF4_NOAUTHDENYREASON) { - EnableWindow(GetDlgItem(m_hwnd, IDC_DENYREASON), FALSE); - SetDlgItemText(m_hwnd, IDC_DENYREASON, TranslateT("Feature is not supported by protocol")); + edtReason.Disable(); + edtReason.SetText(TranslateT("Feature is not supported by protocol")); } if (Contact_OnList(m_hContact)) { @@ -137,18 +143,19 @@ public: void OnDestroy() override { if (!m_bSucceeded) { - if (IsWindowEnabled(GetDlgItem(m_hwnd, IDC_DENYREASON))) { - wchar_t tszReason[256]; - GetDlgItemText(m_hwnd, IDC_DENYREASON, tszReason, _countof(tszReason)); - CallProtoService(m_szProto, PS_AUTHDENY, m_hDbEvent, (LPARAM)tszReason); - } - else CallProtoService(m_szProto, PS_AUTHDENY, m_hDbEvent, 0); + if (edtReason.Enabled()) + CallProtoService(m_szProto, PS_AUTHDENY, m_hDbEvent, (LPARAM)ptrW(edtReason.GetText())); + else + CallProtoService(m_szProto, PS_AUTHDENY, m_hDbEvent, 0); } Button_FreeIcon_IcoLib(m_hwnd, IDC_ADD); Button_FreeIcon_IcoLib(m_hwnd, IDC_DETAILS); - DestroyIcon((HICON)SendMessage(m_hwnd, WM_SETICON, ICON_BIG, 0)); - DestroyIcon((HICON)SendMessage(m_hwnd, WM_SETICON, ICON_SMALL, 0)); + + #ifdef _WINDOWS + DestroyIcon((HICON)SendMessage(m_hwnd, WM_SETICON, ICON_BIG, 0)); + DestroyIcon((HICON)SendMessage(m_hwnd, WM_SETICON, ICON_SMALL, 0)); + #endif } void onClick_Later(CCtrlButton*) @@ -176,6 +183,7 @@ class CAddedDlg : public CDlgBase MEVENT m_hDbEvent; MCONTACT m_hContact; + CCtrlBase fldHeader; CCtrlButton btnDetails, btnAdd; public: @@ -183,7 +191,8 @@ public: CDlgBase(g_plugin, IDD_ADDED), m_hDbEvent(hEvent), btnAdd(this, IDC_ADD), - btnDetails(this, IDC_DETAILS) + btnDetails(this, IDC_DETAILS), + fldHeader(this, IDC_HEADERBAR) { btnAdd.OnClick = Callback(this, &CAddedDlg::onClick_Add); btnDetails.OnClick = Callback(this, &CAddedDlg::onClick_Details); @@ -201,14 +210,16 @@ public: m_hContact = DbGetAuthEventContact(&dbei); - uint32_t uin = *(PDWORD)dbei.pBlob; + uint32_t uin = *(uint32_t*)dbei.pBlob; char* nick = (char*)dbei.pBlob + sizeof(uint32_t) * 2; char* first = nick + mir_strlen(nick) + 1; char* last = first + mir_strlen(first) + 1; char* email = last + mir_strlen(last) + 1; - SendMessage(m_hwnd, WM_SETICON, ICON_SMALL, CallProtoService(dbei.szModule, PS_LOADICON, PLI_PROTOCOL | PLIF_SMALL, 0)); - SendMessage(m_hwnd, WM_SETICON, ICON_BIG, CallProtoService(dbei.szModule, PS_LOADICON, PLI_PROTOCOL | PLIF_LARGE, 0)); + #ifdef _WINDOWS + SendMessage(m_hwnd, WM_SETICON, ICON_SMALL, CallProtoService(dbei.szModule, PS_LOADICON, PLI_PROTOCOL | PLIF_SMALL, 0)); + SendMessage(m_hwnd, WM_SETICON, ICON_BIG, CallProtoService(dbei.szModule, PS_LOADICON, PLI_PROTOCOL | PLIF_LARGE, 0)); + #endif PROTOACCOUNT* acc = Proto_GetAccount(dbei.szModule); @@ -241,10 +252,10 @@ public: mir_snwprintf(hdr, TranslateT("%s added you to the contact list\n%u on %s"), name, uin, acc->tszAccountName); else mir_snwprintf(hdr, TranslateT("%s added you to the contact list\n%s on %s"), name, emailT[0] ? emailT.get() : TranslateT("(Unknown)"), acc->tszAccountName); - SetDlgItemText(m_hwnd, IDC_HEADERBAR, hdr); + fldHeader.SetText(hdr); if (m_hContact == INVALID_CONTACT_ID || Contact_OnList(m_hContact)) - ShowWindow(GetDlgItem(m_hwnd, IDC_ADD), FALSE); + btnAdd.Hide(); return true; } @@ -258,8 +269,11 @@ public: { Button_FreeIcon_IcoLib(m_hwnd, IDC_ADD); Button_FreeIcon_IcoLib(m_hwnd, IDC_DETAILS); - DestroyIcon((HICON)SendMessage(m_hwnd, WM_SETICON, ICON_BIG, 0)); - DestroyIcon((HICON)SendMessage(m_hwnd, WM_SETICON, ICON_SMALL, 0)); + + #ifdef _WINDOWS + DestroyIcon((HICON)SendMessage(m_hwnd, WM_SETICON, ICON_BIG, 0)); + DestroyIcon((HICON)SendMessage(m_hwnd, WM_SETICON, ICON_SMALL, 0)); + #endif } void onClick_Add(CCtrlButton*) @@ -267,7 +281,7 @@ public: Contact_AddByEvent(m_hDbEvent, m_hwnd); if (m_hContact == INVALID_CONTACT_ID || Contact_OnList(m_hContact)) - ShowWindow(GetDlgItem(m_hwnd, IDC_ADD), FALSE); + btnAdd.Hide(); } void onClick_Details(CCtrlButton*) @@ -316,7 +330,7 @@ static int AuthEventAdded(WPARAM, LPARAM lParam) if (szUid) mir_snwprintf(szTooltip, TranslateT("%s requests authorization"), szUid.get()); else - mir_snwprintf(szTooltip, TranslateT("%u requests authorization"), *(PDWORD)dbei.pBlob); + mir_snwprintf(szTooltip, TranslateT("%u requests authorization"), *(uint32_t*)dbei.pBlob); cle.hIcon = Skin_LoadIcon(SKINICON_AUTH_REQUEST); cle.pszService = MS_AUTH_SHOWREQUEST; @@ -327,7 +341,7 @@ static int AuthEventAdded(WPARAM, LPARAM lParam) if (szUid) mir_snwprintf(szTooltip, TranslateT("%s added you to their contact list"), szUid.get()); else - mir_snwprintf(szTooltip, TranslateT("%u added you to their contact list"), *(PDWORD)dbei.pBlob); + mir_snwprintf(szTooltip, TranslateT("%u added you to their contact list"), *(uint32_t*)dbei.pBlob); cle.hIcon = Skin_LoadIcon(SKINICON_AUTH_ADD); cle.pszService = MS_AUTH_SHOWADDED; diff --git a/src/mir_app/src/db_ini.cpp b/src/mir_app/src/db_ini.cpp index 910f0732f6..a51e4858b9 100644 --- a/src/mir_app/src/db_ini.cpp +++ b/src/mir_app/src/db_ini.cpp @@ -130,11 +130,11 @@ static bool IsInSpaceSeparatedList(const char *szWord, const char *szList) struct warnSettingChangeInfo_t
{
wchar_t *szIniPath;
- char *szSection;
- char *szSafeSections;
- char *szUnsafeSections;
- char *szName;
- char *szValue;
+ const char *szSection;
+ const char *szSafeSections;
+ const char *szUnsafeSections;
+ const char *szName;
+ const char *szValue;
int warnNoMore, cancel;
};
@@ -230,12 +230,14 @@ public: m_iniPath.SetText(m_path);
m_newPath.SetText(m_path);
- if (!PU::IsMirandaFolderWritable()) {
- bool bIsElevated = PU::IsProcessElevated();
- Button_SetElevationRequiredState(btnMove.GetHwnd(), !bIsElevated);
- Button_SetElevationRequiredState(btnDelete.GetHwnd(), !bIsElevated);
- Button_SetElevationRequiredState(btnRecycle.GetHwnd(), !bIsElevated);
- }
+ #ifdef _WINDOWS
+ if (!PU::IsMirandaFolderWritable()) {
+ bool bIsElevated = PU::IsProcessElevated();
+ Button_SetElevationRequiredState(btnMove.GetHwnd(), !bIsElevated);
+ Button_SetElevationRequiredState(btnDelete.GetHwnd(), !bIsElevated);
+ Button_SetElevationRequiredState(btnRecycle.GetHwnd(), !bIsElevated);
+ }
+ #endif
return true;
}
@@ -244,7 +246,7 @@ public: {
ptrW wszOldFile(m_iniPath.GetText()), wszNewFile(ptrW(m_newPath.GetText()));
if (!wcsicmp(wszOldFile, wszNewFile)) {
- MessageBoxW(m_hwnd, TranslateT("File names must be different"), TranslateT("Error"), MB_ICONERROR | MB_OK);
+ // MessageBoxW(m_hwnd, TranslateT("File names must be different"), TranslateT("Error"), MB_ICONERROR | MB_OK);
return;
}
@@ -283,22 +285,6 @@ int SettingsEnumProc(const char *szSetting, void *) return 0;
}
-static void ConvertBackslashes(char *str, UINT fileCp)
-{
- char *pstr;
- for (pstr = str; *pstr; pstr = CharNextExA(fileCp, pstr, 0)) {
- if (*pstr == '\\') {
- switch (pstr[1]) {
- case 'n': *pstr = '\n'; break;
- case 't': *pstr = '\t'; break;
- case 'r': *pstr = '\r'; break;
- default: *pstr = pstr[1]; break;
- }
- memmove(pstr + 1, pstr + 2, mir_strlen(pstr + 2) + 1);
- }
- }
-}
-
struct ESFDParam
{
LIST<char> *pList;
@@ -313,7 +299,7 @@ static int EnumSettingsForDeletion(const char *szSetting, void *param) return 0;
}
-static void ProcessIniFile(wchar_t* szIniPath, char *szSafeSections, char *szUnsafeSections, int secur, bool secFN)
+static void ProcessIniFile(wchar_t* szIniPath, const char *szSafeSections, const char *szUnsafeSections, int secur, bool secFN)
{
FILE *fp = _wfopen(szIniPath, L"rt");
if (fp == nullptr)
@@ -362,6 +348,7 @@ LBL_NewLine: }
if (secFN) warnThisSection = 0;
}
+
if (szLine[1] == '?' || szLine[1] == '-') {
mir_strncpy(szSection, szLine + 2, min(sizeof(szSection), (size_t)(szEnd - szLine - 1)));
db_enum_settings(0, SettingsEnumProc, szSection);
@@ -437,7 +424,15 @@ LBL_NewLine: break;
case 'e':
case 'E':
- ConvertBackslashes(szValue + 1, Langpack_GetDefaultCodePage());
+ {
+ CMStringA str(szValue + 1);
+ str.Replace("\\n", "\n");
+ str.Replace("\\t", "\t");
+ str.Replace("\\r", "\r");
+ str.Replace("\\\\", "\\");
+ db_set_s(0, szSection, szName, str);
+ }
+ break;
case 's':
case 'S':
db_set_s(0, szSection, szName, szValue + 1);
@@ -541,21 +536,17 @@ static void DoAutoExec(void) PathToAbsoluteW(VARSW(szFindPath), szFindPath);
- WIN32_FIND_DATA fd;
- HANDLE hFind = FindFirstFile(szFindPath, &fd);
- if (hFind == INVALID_HANDLE_VALUE)
- return;
-
+ MFilePath path(szFindPath);
wchar_t *str2 = wcsrchr(szFindPath, '\\');
if (str2 == nullptr)
szFindPath[0] = 0;
else
str2[1] = 0;
- do {
- bool secFN = mir_wstrcmpi(fd.cFileName, szOverrideSecurityFilename) == 0;
+ for (auto &it: path.search()) {
+ bool secFN = mir_wstrcmpi(it.getPath(), szOverrideSecurityFilename) == 0;
- mir_snwprintf(szIniPath, L"%s%s", szFindPath, fd.cFileName);
+ mir_snwprintf(szIniPath, L"%s%s", szFindPath, it.getPath());
if (!mir_wstrcmpi(szUse, L"prompt") && !secFN) {
CInstallIniDlg dlg(szIniPath);
int result = dlg.DoModal();
@@ -578,7 +569,7 @@ static void DoAutoExec(void) else if (!mir_wstrcmpi(szOnCompletion, L"rename")) {
wchar_t wszRenamePrefix[MAX_PATH], wszNewPath[MAX_PATH];
Profile_GetSetting(L"AutoExec/RenamePrefix", wszRenamePrefix, L"done_");
- mir_snwprintf(wszNewPath, L"%s%s%s", szFindPath, wszRenamePrefix, fd.cFileName);
+ mir_snwprintf(wszNewPath, L"%s%s%s", szFindPath, wszRenamePrefix, it.getPath());
MyMoveFile(szIniPath, wszNewPath);
}
else if (!mir_wstrcmpi(szOnCompletion, L"ask")) {
@@ -586,15 +577,16 @@ static void DoAutoExec(void) dlg.DoModal();
}
}
- } while (FindNextFile(hFind, &fd));
-
- FindClose(hFind);
+ }
}
static void CALLBACK CheckIniImportNow()
{
DoAutoExec();
- FindNextChangeNotification(hIniChangeNotification);
+
+ #ifdef _WINDOWS
+ FindNextChangeNotification(hIniChangeNotification);
+ #endif
}
static INT_PTR ImportINI(WPARAM wParam, LPARAM)
@@ -610,11 +602,13 @@ int InitIni(void) CreateServiceFunction("DB/Ini/ImportFile", ImportINI);
DoAutoExec();
- wchar_t szMirandaDir[MAX_PATH];
- PathToAbsoluteW(L".", szMirandaDir);
- hIniChangeNotification = FindFirstChangeNotification(szMirandaDir, 0, FILE_NOTIFY_CHANGE_FILE_NAME);
- if (hIniChangeNotification != INVALID_HANDLE_VALUE)
- Miranda_WaitOnHandle(CheckIniImportNow, hIniChangeNotification);
+ #ifdef _WINDOWS
+ wchar_t szMirandaDir[MAX_PATH];
+ PathToAbsoluteW(L".", szMirandaDir);
+ hIniChangeNotification = FindFirstChangeNotification(szMirandaDir, 0, FILE_NOTIFY_CHANGE_FILE_NAME);
+ if (hIniChangeNotification != INVALID_HANDLE_VALUE)
+ Miranda_WaitOnHandle(CheckIniImportNow, hIniChangeNotification);
+ #endif
return 0;
}
@@ -624,5 +618,7 @@ void UninitIni(void) if (!bModuleInitialized)
return;
- FindCloseChangeNotification(hIniChangeNotification);
+ #ifdef _WINDOWS
+ FindCloseChangeNotification(hIniChangeNotification);
+ #endif
}
diff --git a/src/mir_app/src/miranda.cpp b/src/mir_app/src/miranda.cpp index 12c4d64c69..4f6e7b1beb 100644 --- a/src/mir_app/src/miranda.cpp +++ b/src/mir_app/src/miranda.cpp @@ -61,6 +61,8 @@ CMPlugin::CMPlugin() : PLUGIN<CMPlugin>(nullptr, pluginInfoEx)
{}
+#ifdef _WINDOWS
+
/////////////////////////////////////////////////////////////////////////////////////////
// dll entry point
@@ -83,6 +85,8 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, uint32_t dwReason, LPVOID) return TRUE;
}
+#endif
+
/////////////////////////////////////////////////////////////////////////////////////////
static int SystemShutdownProc(WPARAM, LPARAM)
@@ -117,10 +121,13 @@ protected: {
if (m_progress.Move() == MIRANDA_PROCESS_WAIT_STEPS)
EndModal(0);
- if (WaitForSingleObject(m_hProcess, 1) != WAIT_TIMEOUT) {
- m_progress.SetPosition(MIRANDA_PROCESS_WAIT_STEPS);
- EndModal(0);
- }
+
+ #ifdef _WINDOWS
+ if (WaitForSingleObject(m_hProcess, 1) != WAIT_TIMEOUT) {
+ m_progress.SetPosition(MIRANDA_PROCESS_WAIT_STEPS);
+ EndModal(0);
+ }
+ #endif
}
void Cancel_OnClick(CCtrlBase*)
@@ -145,12 +152,14 @@ INT_PTR CheckRestart() {
LPCTSTR tszPID = CmdLine_GetOption(L"restart");
if (tszPID) {
- HANDLE hProcess = OpenProcess(SYNCHRONIZE, FALSE, _wtol(tszPID));
- if (hProcess) {
- INT_PTR result = CWaitRestartDlg(hProcess).DoModal();
- CloseHandle(hProcess);
- return result;
- }
+ #ifdef _WINDOWS
+ HANDLE hProcess = OpenProcess(SYNCHRONIZE, FALSE, _wtol(tszPID));
+ if (hProcess) {
+ INT_PTR result = CWaitRestartDlg(hProcess).DoModal();
+ CloseHandle(hProcess);
+ return result;
+ }
+ #endif
}
return 0;
}
@@ -171,7 +180,7 @@ static MSystemWindow *g_pSystemWindow; /////////////////////////////////////////////////////////////////////////////////////////
-int WINAPI mir_main(LPTSTR cmdLine)
+int CALLBACK mir_main(LPTSTR cmdLine)
{
hMainThreadId = GetCurrentThreadId();
@@ -227,15 +236,19 @@ MIR_APP_DLL(bool) Miranda_OkToExit() MIR_APP_DLL(void) Miranda_Close()
{
while (!Miranda_OkToExit()) {
- MSG msg;
- while (PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE)) {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- Sleep(0);
+ #ifdef _WINDOWS
+ MSG msg;
+ while (PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE)) {
+ TranslateMessage(&msg);
+ DispatchMessage(&msg);
+ }
+ Sleep(0);
+ #endif
}
- DestroyWindow(g_clistApi.hwndContactList);
+ #ifdef _WINDOWS
+ DestroyWindow(g_clistApi.hwndContactList);
+ #endif
}
/////////////////////////////////////////////////////////////////////////////////////////
@@ -243,53 +256,67 @@ MIR_APP_DLL(void) Miranda_Close() MIR_APP_DLL(uint32_t) Miranda_GetVersion()
{
- wchar_t filename[MAX_PATH];
- GetModuleFileName(g_plugin.getInst(), filename, _countof(filename));
-
- DWORD unused, verInfoSize = GetFileVersionInfoSize(filename, &unused);
- PVOID pVerInfo = _alloca(verInfoSize);
- GetFileVersionInfo(filename, 0, verInfoSize, pVerInfo);
-
- UINT blockSize;
- VS_FIXEDFILEINFO *vsffi;
- VerQueryValue(pVerInfo, L"\\", (PVOID*)&vsffi, &blockSize);
- return (((vsffi->dwProductVersionMS >> 16) & 0xFF) << 24) |
- ((vsffi->dwProductVersionMS & 0xFF) << 16) |
- (((vsffi->dwProductVersionLS >> 16) & 0xFF) << 8) |
- (vsffi->dwProductVersionLS & 0xFF);
+ #ifdef _WINDOWS
+ wchar_t filename[MAX_PATH];
+ GetModuleFileName(g_plugin.getInst(), filename, _countof(filename));
+
+ DWORD unused, verInfoSize = GetFileVersionInfoSize(filename, &unused);
+ PVOID pVerInfo = _alloca(verInfoSize);
+ GetFileVersionInfo(filename, 0, verInfoSize, pVerInfo);
+
+ UINT blockSize;
+ VS_FIXEDFILEINFO *vsffi;
+ VerQueryValue(pVerInfo, L"\\", (PVOID*)&vsffi, &blockSize);
+ return (((vsffi->dwProductVersionMS >> 16) & 0xFF) << 24) |
+ ((vsffi->dwProductVersionMS & 0xFF) << 16) |
+ (((vsffi->dwProductVersionLS >> 16) & 0xFF) << 8) |
+ (vsffi->dwProductVersionLS & 0xFF);
+ #else
+ return MIRANDA_VERSION_DWORD;
+ #endif
}
MIR_APP_DLL(void) Miranda_GetFileVersion(MFileVersion *pVer)
{
- wchar_t filename[MAX_PATH];
- GetModuleFileName(g_plugin.getInst(), filename, _countof(filename));
-
- DWORD unused, verInfoSize = GetFileVersionInfoSize(filename, &unused);
- PVOID pVerInfo = _alloca(verInfoSize);
- GetFileVersionInfo(filename, 0, verInfoSize, pVerInfo);
-
- UINT blockSize;
- VS_FIXEDFILEINFO *vsffi;
- VerQueryValue(pVerInfo, L"\\", (PVOID*)&vsffi, &blockSize);
-
- (*pVer)[0] = HIWORD(vsffi->dwProductVersionMS);
- (*pVer)[1] = LOWORD(vsffi->dwProductVersionMS);
- (*pVer)[2] = HIWORD(vsffi->dwProductVersionLS);
- (*pVer)[3] = LOWORD(vsffi->dwProductVersionLS);
+ #ifdef _WINDOWS
+ wchar_t filename[MAX_PATH];
+ GetModuleFileName(g_plugin.getInst(), filename, _countof(filename));
+
+ DWORD unused, verInfoSize = GetFileVersionInfoSize(filename, &unused);
+ PVOID pVerInfo = _alloca(verInfoSize);
+ GetFileVersionInfo(filename, 0, verInfoSize, pVerInfo);
+
+ UINT blockSize;
+ VS_FIXEDFILEINFO *vsffi;
+ VerQueryValue(pVerInfo, L"\\", (PVOID*)&vsffi, &blockSize);
+
+ (*pVer)[0] = HIWORD(vsffi->dwProductVersionMS);
+ (*pVer)[1] = LOWORD(vsffi->dwProductVersionMS);
+ (*pVer)[2] = HIWORD(vsffi->dwProductVersionLS);
+ (*pVer)[3] = LOWORD(vsffi->dwProductVersionLS);
+ #else
+ uint16_t tmp[4] = { MIRANDA_VERSION_FILEVERSION };
+ memcpy(pVer, tmp, sizeof(tmp));
+ #endif
}
MIR_APP_DLL(void) Miranda_GetVersionText(char *pDest, size_t cbSize)
{
- wchar_t filename[MAX_PATH], *productVersion;
- GetModuleFileName(g_plugin.getInst(), filename, _countof(filename));
-
- DWORD unused, verInfoSize = GetFileVersionInfoSize(filename, &unused);
- PVOID pVerInfo = _alloca(verInfoSize);
- GetFileVersionInfo(filename, 0, verInfoSize, pVerInfo);
+ #ifdef _WINDOWS
+ wchar_t filename[MAX_PATH], *productVersion;
+ GetModuleFileName(g_plugin.getInst(), filename, _countof(filename));
+
+ DWORD unused, verInfoSize = GetFileVersionInfoSize(filename, &unused);
+ PVOID pVerInfo = _alloca(verInfoSize);
+ GetFileVersionInfo(filename, 0, verInfoSize, pVerInfo);
+
+ UINT blockSize;
+ VerQueryValue(pVerInfo, L"\\StringFileInfo\\000004b0\\ProductVersion", (LPVOID*)&productVersion, &blockSize);
+ strncpy_s(pDest, cbSize, _T2A(productVersion), _TRUNCATE);
+ #else
+ strncpy_s(pDest, cbSize, "Miranda NG " MIRANDA_VERSION_DISPLAY, _TRUNCATE);
+ #endif
- UINT blockSize;
- VerQueryValue(pVerInfo, L"\\StringFileInfo\\000004b0\\ProductVersion", (LPVOID*)&productVersion, &blockSize);
- strncpy_s(pDest, cbSize, _T2A(productVersion), _TRUNCATE);
#if defined(_WIN64)
strcat_s(pDest, cbSize, " x64");
#endif
diff --git a/src/mir_app/src/miranda.h b/src/mir_app/src/miranda.h index c3f476c21a..97aee60c7b 100644 --- a/src/mir_app/src/miranda.h +++ b/src/mir_app/src/miranda.h @@ -54,7 +54,8 @@ extern bool g_bModulesLoadedFired; /**** newplugins.cpp *******************************************************************/
-char* GetPluginNameByInstance(HINSTANCE hInstance);
+const char* GetPluginNameByInstance(HINSTANCE hInstance);
+
int LoadStdPlugins(void);
int LaunchServicePlugin(pluginEntry *p);
diff --git a/src/mir_app/src/stdafx.h b/src/mir_app/src/stdafx.h index d6770083fa..9e8bb456c8 100644 --- a/src/mir_app/src/stdafx.h +++ b/src/mir_app/src/stdafx.h @@ -41,6 +41,8 @@ typedef struct SslHandle *HSSL; #include <io.h>
#include <direct.h>
#include <process.h>
+#else
+ #include <pthread.h>
#endif
#include <assert.h>
diff --git a/src/mir_core/src/Linux/CCtrlBase.cpp b/src/mir_core/src/Linux/CCtrlBase.cpp index 61d03c99af..cba8567e52 100644 --- a/src/mir_core/src/Linux/CCtrlBase.cpp +++ b/src/mir_core/src/Linux/CCtrlBase.cpp @@ -28,6 +28,7 @@ static int CompareControls(const CCtrlBase *p1, const CCtrlBase *p2) { return (INT_PTR)p1->GetHwnd() - (INT_PTR)p2->GetHwnd(); } + static LIST<CCtrlBase> arControls(10, CompareControls); ///////////////////////////////////////////////////////////////////////////////////////// @@ -60,6 +61,7 @@ void CCtrlBase::OnDestroy() arControls.remove(pCtrl); } + evas_object_del(m_hwnd); m_hwnd = nullptr; } diff --git a/src/mir_core/src/Linux/CCtrlButton.cpp b/src/mir_core/src/Linux/CCtrlButton.cpp index 1fb547bef8..e8c107b888 100644 --- a/src/mir_core/src/Linux/CCtrlButton.cpp +++ b/src/mir_core/src/Linux/CCtrlButton.cpp @@ -29,7 +29,7 @@ CCtrlButton::CCtrlButton(CDlgBase* wnd, int idCtrl) : CCtrlBase(wnd, idCtrl) {} -BOOL CCtrlButton::OnCommand(HWND, uint16_t, uint16_t idCode) +BOOL CCtrlButton::OnCommand(MWindow, uint16_t, uint16_t idCode) { // if (idCode == BN_CLICKED) // OnClick(this); diff --git a/src/mir_core/src/Linux/CCtrlCheck.cpp b/src/mir_core/src/Linux/CCtrlCheck.cpp index 15c9ab0f1b..7c821f0329 100644 --- a/src/mir_core/src/Linux/CCtrlCheck.cpp +++ b/src/mir_core/src/Linux/CCtrlCheck.cpp @@ -31,7 +31,7 @@ CCtrlCheck::CCtrlCheck(CDlgBase *dlg, int ctrlId) m_bNotifiable = true; } -BOOL CCtrlCheck::OnCommand(HWND, uint16_t, uint16_t) +BOOL CCtrlCheck::OnCommand(MWindow, uint16_t, uint16_t) { NotifyChange(); return TRUE; diff --git a/src/mir_core/src/Linux/CCtrlCombo.cpp b/src/mir_core/src/Linux/CCtrlCombo.cpp index 905ebc7a24..063588e39e 100644 --- a/src/mir_core/src/Linux/CCtrlCombo.cpp +++ b/src/mir_core/src/Linux/CCtrlCombo.cpp @@ -29,7 +29,7 @@ CCtrlCombo::CCtrlCombo(CDlgBase *dlg, int ctrlId) : CCtrlData(dlg, ctrlId) {} -BOOL CCtrlCombo::OnCommand(HWND, uint16_t, uint16_t idCode) +BOOL CCtrlCombo::OnCommand(MWindow, uint16_t, uint16_t idCode) { switch (idCode) { // case CBN_CLOSEUP: OnCloseup(this); break; diff --git a/src/mir_core/src/Linux/CCtrlEdit.cpp b/src/mir_core/src/Linux/CCtrlEdit.cpp index b2b5e14d46..7f1ac14cc2 100644 --- a/src/mir_core/src/Linux/CCtrlEdit.cpp +++ b/src/mir_core/src/Linux/CCtrlEdit.cpp @@ -29,7 +29,7 @@ CCtrlEdit::CCtrlEdit(CDlgBase *dlg, int ctrlId) : CCtrlData(dlg, ctrlId) {} -BOOL CCtrlEdit::OnCommand(HWND, uint16_t, uint16_t idCode) +BOOL CCtrlEdit::OnCommand(MWindow, uint16_t, uint16_t idCode) { // if (idCode == EN_CHANGE) // NotifyChange(); diff --git a/src/mir_core/src/Linux/CDlgBase.cpp b/src/mir_core/src/Linux/CDlgBase.cpp index 425e71ee31..3504a7e74c 100644 --- a/src/mir_core/src/Linux/CDlgBase.cpp +++ b/src/mir_core/src/Linux/CDlgBase.cpp @@ -175,7 +175,7 @@ int CDlgBase::Resizer(UTILRESIZECONTROL*) return RD_ANCHORX_LEFT | RD_ANCHORY_TOP; } -BOOL CALLBACK CDlgBase::GlobalFieldEnum(HWND hwnd, LPARAM lParam) +BOOL CALLBACK CDlgBase::GlobalFieldEnum(MWindow hwnd, LPARAM lParam) { return TRUE; } @@ -185,7 +185,7 @@ INT_PTR CDlgBase::DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) return FALSE; } -int CDlgBase::GlobalDlgResizer(HWND hwnd, LPARAM, UTILRESIZECONTROL *urc) +int CDlgBase::GlobalDlgResizer(MWindow hwnd, LPARAM, UTILRESIZECONTROL *urc) { CDlgBase *wnd = CDlgBase::Find(hwnd); return (wnd == nullptr) ? 0 : wnd->Resizer(urc); @@ -226,7 +226,7 @@ CCtrlBase* CDlgBase::FindControl(int idCtrl) return m_controls.find(&search); } -CCtrlBase* CDlgBase::FindControl(HWND hwnd) +CCtrlBase* CDlgBase::FindControl(MWindow hwnd) { for (auto &it : m_controls) if (it->GetHwnd() == hwnd) @@ -252,7 +252,7 @@ CTimer* CDlgBase::FindTimer(int idEvent) return m_timers.find(&search); } -CDlgBase* CDlgBase::Find(HWND hwnd) +CDlgBase* CDlgBase::Find(MWindow hwnd) { void *bullshit[2]; // vfptr + hwnd bullshit[1] = hwnd; |