From a70382b0e8bed265a1d314d9f6aae8f2dd48d20b Mon Sep 17 00:00:00 2001 From: George Hazan Date: Wed, 28 Nov 2012 18:45:54 +0000 Subject: ex-protos moved to the Plugins folder git-svn-id: http://svn.miranda-ng.org/main/trunk@2545 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Weather/src/weather_info.cpp | 252 +++++++++++++++++++++++++++++++++++ 1 file changed, 252 insertions(+) create mode 100644 plugins/Weather/src/weather_info.cpp (limited to 'plugins/Weather/src/weather_info.cpp') diff --git a/plugins/Weather/src/weather_info.cpp b/plugins/Weather/src/weather_info.cpp new file mode 100644 index 0000000000..f02fc79a28 --- /dev/null +++ b/plugins/Weather/src/weather_info.cpp @@ -0,0 +1,252 @@ +/* +Weather Protocol plugin for Miranda IM +Copyright (c) 2012 Miranda NG Team +Copyright (c) 2005-2011 Boris Krasnovskiy All Rights Reserved +Copyright (c) 2002-2005 Calvin Che + +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; version 2 +of the License. + +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 . +*/ + + +/* +This file contain the source for displaying information for the +ini files, as well as function that are used for debug purpose +regrading the loading of ini contents +*/ + +#include "weather.h" + +//============ INI INFORMATION ============ + +// List INI Information for all loaded INI files +void INIInfo(HWND hwndDlg) +{ + TCHAR str[16]; + size_t memused = 0; + LVITEM lvi = {0}; + WIDATALIST *Item = WIHead; + + HWND hIniList = GetDlgItem(hwndDlg, IDC_INFOLIST); + + ListView_DeleteAllItems(hIniList); + + lvi.mask = LVIF_TEXT; + lvi.iItem = 0; + while (Item != NULL) + { + // get the data for the ini file + lvi.iSubItem = 0; + lvi.pszText = Item->Data.InternalName; + ListView_InsertItem(hIniList, &lvi); + lvi.iSubItem = 1; + lvi.pszText = Item->Data.Author; + ListView_SetItem(hIniList, &lvi); + lvi.iSubItem = 2; + lvi.pszText = Item->Data.Version; + ListView_SetItem(hIniList, &lvi); + lvi.iSubItem = 3; + switch (Item->Data.InternalVer) + { + case 1: lvi.pszText = _T("1.0"); break; + case 2: lvi.pszText = _T("1.1"); break; + case 3: lvi.pszText = _T("1.1a"); break; + case 4: lvi.pszText = _T("1.2"); break; + case 5: lvi.pszText = _T("1.3"); break; + case 6: lvi.pszText = _T("1.4"); break; + default: lvi.pszText = _T(""); break; + } + ListView_SetItem(hIniList, &lvi); + lvi.iSubItem = 4; + lvi.pszText = _ltot(Item->Data.UpdateDataCount, str, 10); + ListView_SetItem(hIniList, &lvi); + lvi.iSubItem = 5; + lvi.pszText = Item->Data.DisplayName; + ListView_SetItem(hIniList, &lvi); + lvi.iSubItem = 6; + lvi.pszText = Item->Data.ShortFileName; + ListView_SetItem(hIniList, &lvi); + + memused += Item->Data.MemUsed; + + Item = Item->next; + ++lvi.iItem; + } + SetDlgItemText(hwndDlg, IDC_INICOUNT, _itot(lvi.iItem, str, 10)); + SetDlgItemText(hwndDlg, IDC_MEMUSED, _ltot((long)memused, str, 10)); +} + +static const struct tag_Columns +{ + const TCHAR *name; + unsigned size; +} +columns[] = +{ + { _T("Name"), 70 }, + { _T("Author"), 100 }, + { _T("File Version"), 70 }, + { _T("INI Version"), 70 }, + { _T("Items"), 40 }, + { _T("Display Name"), 200 }, + { _T("File Name"), 150 }, +}; + + +INT_PTR CALLBACK DlgProcINIPage(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) +{ + switch (msg) + { + case WM_INITDIALOG: + TranslateDialogDefault(hwndDlg); + { + HWND hIniList = GetDlgItem(hwndDlg, IDC_INFOLIST); + LVCOLUMN lvc = {0}; + + lvc.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH; + lvc.fmt = LVCFMT_LEFT; + for ( int i=0; i<7; ++i) { + lvc.iSubItem = i; + lvc.pszText = TranslateTS(columns[i].name); + lvc.cx = columns[i].size; + ListView_InsertColumn(hIniList, i, &lvc); + } + INIInfo(hwndDlg); + } + + break; + + case WM_DESTROY: + break; + + case WM_COMMAND: + if ( HIWORD(wParam) == BN_CLICKED && + LOWORD(wParam) == IDC_RELOADINI ) + { + DestroyWIList(); + LoadWIData(TRUE); + INIInfo(hwndDlg); + } + break; + } + return 0; +} + + +// get the info of individual ini file +// pszSvc = the internal name of the service to get the data +void GetINIInfo(TCHAR *pszSvc) +{ + TCHAR str2[2048]; + WIDATA *sData = GetWIData(pszSvc); + // if the service does not exist among the loaded INI's + if (sData == NULL) + { + wsprintf(str2, TranslateT("The corresponding INI file for \"%s\" is not found."), pszSvc); + MessageBox(NULL, str2, TranslateT("Weather INI information"), MB_OK|MB_ICONINFORMATION); + } + // if exist, get the information + else + { + wsprintf(str2, TranslateT("Weather INI information for \"%s\":"), pszSvc); + _tcscat(str2,_T("\n\n")); + _tcscat(str2, TranslateT("Name:")); + _tcscat(str2,_T("\t\t")); + _tcscat(str2, sData->DisplayName); + _tcscat(str2,_T("\n")); + _tcscat(str2, TranslateT("Internal Name:")); + _tcscat(str2,_T("\t")); + _tcscat(str2, sData->InternalName); + _tcscat(str2,_T("\n")); + _tcscat(str2, TranslateT("Author:")); + _tcscat(str2,_T("\t\t")); + _tcscat(str2, sData->Author); + _tcscat(str2,_T("\n")); + _tcscat(str2, TranslateT("Version:")); + _tcscat(str2,_T("\t\t")); + _tcscat(str2, sData->Version); + _tcscat(str2,_T("\n")); + _tcscat(str2, TranslateT("INI Version:")); + _tcscat(str2,_T("\t")); + switch (sData->InternalVer) { + case 1: _tcscat(str2,_T("1.0")); break; + case 2: _tcscat(str2,_T("1.1")); break; + case 3: _tcscat(str2,_T("1.1a")); break; + case 4: _tcscat(str2,_T("1.2")); break; + case 5: _tcscat(str2,_T("1.3")); break; + case 6: _tcscat(str2,_T("1.4")); break; + } + _tcscat(str2,_T("\n")); + _tcscat(str2, TranslateT("File Name:")); + _tcscat(str2,_T("\t")); + _tcscat(str2, sData->ShortFileName); + _tcscat(str2, _T("\n")); + _tcscat(str2, TranslateT("Item Count:")); + wsprintf(str2, _T("%s\t%i\n"), str2, sData->UpdateDataCount); + _tcscat(str2, TranslateT("Memory Used:")); + wsprintf(str2, _T("%s\t%i "), str2, sData->MemUsed); + _tcscat(str2, TranslateT("bytes")); + _tcscat(str2,_T("\n\n")); + _tcscat(str2, TranslateT("Description:")); + _tcscat(str2,_T("\n")); + _tcscat(str2, sData->Description); + + // display the message box and quit + MessageBox(NULL, str2, TranslateT("Weather INI information"), MB_OK|MB_ICONINFORMATION); + } +} + +//============ DISPLAY A LIST FOR CUSTOM VARIABLES ============ + +// a message box for displaying the list of custom variables +// can be found when click on "More" in text option dialog +void MoreVarList(void) +{ + TCHAR str[10240], tempstr[1024]; + + WIDATALIST *Item = WIHead; + // heading + _tcscpy(str, TranslateT("Here is a list of custom variables that are currently available")); + _tcscat(str, _T("\n\n")); + // loop through all weather services to find custom variables + while (Item != NULL) + { + WIDATAITEMLIST* WItem; + WItem = Item->Data.UpdateData; + // loop through all update items in a service + while (WItem != NULL) + { + // the custom variable is defined as "%[]" + // ignore the "hi" item and hidden items + if ( _tcscmp(WItem->Item.Name, _T("Ignore")) && WItem->Item.Name[0] != '#') { + wsprintf(tempstr, _T("%c[%s]"), '%', WItem->Item.Name); + TCHAR* find = _tcsstr(str, tempstr); + // if the custom variable does not exist in the list, add it to the list + if (find == NULL) { + _tcscat(str, tempstr); + _tcscat(str, _T(", ")); + } + } + WItem = WItem->Next; + } + Item = Item->next; + } + // remove the last comma in the list + TCHAR* find = _tcsrchr(str, ','); + if (find != NULL) + *find = '\0'; + + // display the list in a message box + MessageBox(NULL, str, TranslateT("More Variables"), MB_OK|MB_ICONINFORMATION|MB_TOPMOST); +} + -- cgit v1.2.3