diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/NewsAggregator/Res/Resource.rc | 10 | ||||
-rw-r--r-- | plugins/NewsAggregator/Src/Common.h | 2 | ||||
-rw-r--r-- | plugins/NewsAggregator/Src/Options.cpp | 150 | ||||
-rw-r--r-- | plugins/NewsAggregator/Src/Services.cpp | 4 | ||||
-rw-r--r-- | plugins/NewsAggregator/Src/Update.cpp | 4 | ||||
-rw-r--r-- | plugins/NewsAggregator/Src/resource.h | 8 | ||||
-rw-r--r-- | plugins/NewsAggregator/docs/subscriptions_test.xml | 175 |
7 files changed, 317 insertions, 36 deletions
diff --git a/plugins/NewsAggregator/Res/Resource.rc b/plugins/NewsAggregator/Res/Resource.rc index ebfaf80278..a05fbb0698 100644 --- a/plugins/NewsAggregator/Res/Resource.rc +++ b/plugins/NewsAggregator/Res/Resource.rc @@ -13,7 +13,7 @@ #undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
-// () resources
+// Russian (Russia) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
@@ -48,8 +48,8 @@ BEGIN PUSHBUTTON "Add",IDC_ADD,79,187,50,14
PUSHBUTTON "Change",IDC_CHANGE,133,187,50,14
PUSHBUTTON "Remove",IDC_REMOVE,187,187,50,14
- PUSHBUTTON "Import",IDC_IMORT,252,204,50,14
- PUSHBUTTON "Export",IDC_EXORT,252,219,50,14
+ PUSHBUTTON "Import",IDC_IMPORT,252,204,50,14
+ PUSHBUTTON "Export",IDC_EXPORT,252,219,50,14
CONTROL "Retrieve news at startup",IDC_STARTUPRETRIEVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,9,205,203,10
END
@@ -80,7 +80,7 @@ BEGIN LTEXT "All item's tags are valid. Put them between #. Example: #<author>#",IDC_STATIC,14,182,160,16
PUSHBUTTON "Reset",IDC_RESET,192,184,45,14
PUSHBUTTON "?",IDC_TAGHELP,175,184,15,14
- LTEXT "0 - check manually",IDC_STATIC,100,55,79,8
+ LTEXT "0 - check manually",IDC_STATIC,100,55,78,8
EDITTEXT IDC_CHECKTIME,64,45,32,12,ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER
CONTROL "",IDC_TIMEOUT_VALUE_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,85,45,11,12
END
@@ -134,7 +134,7 @@ BEGIN END
#endif // APSTUDIO_INVOKED
-#endif // () resources
+#endif // Russian (Russia) resources
/////////////////////////////////////////////////////////////////////////////
diff --git a/plugins/NewsAggregator/Src/Common.h b/plugins/NewsAggregator/Src/Common.h index 51824c6d07..d26aefed29 100644 --- a/plugins/NewsAggregator/Src/Common.h +++ b/plugins/NewsAggregator/Src/Common.h @@ -49,6 +49,8 @@ Boston, MA 02111-1307, USA. #define MODULE "NewsAggregator"
#define TAGSDEFAULT "#<title>#\r\n#<link>#\r\n#<description>#"
#define DEFAULT_AVATARS_FOLDER "NewsAggregator"
+#define DEFAULT_UPDATE_TIME 60
+
extern HINSTANCE hInst;
extern HWND hAddFeedDlg;
extern HANDLE hChangeFeedDlgList;
diff --git a/plugins/NewsAggregator/Src/Options.cpp b/plugins/NewsAggregator/Src/Options.cpp index af216f5b56..2294167848 100644 --- a/plugins/NewsAggregator/Src/Options.cpp +++ b/plugins/NewsAggregator/Src/Options.cpp @@ -31,7 +31,7 @@ INT_PTR CALLBACK DlgProcAddFeedOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARA SetDlgItemText(hwndDlg, IDC_FEEDURL, _T("http://"));
SetDlgItemText(hwndDlg, IDC_TAGSEDIT, _T(TAGSDEFAULT));
SendDlgItemMessage(hwndDlg, IDC_CHECKTIME, EM_LIMITTEXT, 3, 0);
- SetDlgItemInt(hwndDlg, IDC_CHECKTIME, 60, TRUE);
+ SetDlgItemInt(hwndDlg, IDC_CHECKTIME, DEFAULT_UPDATE_TIME, TRUE);
SendDlgItemMessage(hwndDlg, IDC_TIMEOUT_VALUE_SPIN, UDM_SETRANGE32, 0, 999);
Utils_RestoreWindowPositionNoSize(hwndDlg,NULL,MODULE,"AddDlg");
return TRUE;
@@ -195,7 +195,7 @@ INT_PTR CALLBACK DlgProcChangeFeedOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LP SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG)nSelItem);
SetDlgItemText(hwndDlg, IDC_FEEDURL, SelItem.url);
SetDlgItemText(hwndDlg, IDC_FEEDTITLE, SelItem.nick);
- SetDlgItemInt(hwndDlg, IDC_CHECKTIME, DBGetContactSettingDword(hContact, MODULE, "UpdateTime", 60), TRUE);
+ SetDlgItemInt(hwndDlg, IDC_CHECKTIME, DBGetContactSettingDword(hContact, MODULE, "UpdateTime", DEFAULT_UPDATE_TIME), TRUE);
DBVARIANT dbMsg = {0};
if (!DBGetContactSettingTString(hContact, MODULE, "MsgFormat", &dbMsg))
{
@@ -228,8 +228,8 @@ INT_PTR CALLBACK DlgProcChangeFeedOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LP }
hContact = db_find_next(hContact);
}
- WindowList_Add(hChangeFeedDlgList,hwndDlg,hContact);
- Utils_RestoreWindowPositionNoSize(hwndDlg,hContact,MODULE,"ChangeDlg");
+ WindowList_Add(hChangeFeedDlgList, hwndDlg, hContact);
+ Utils_RestoreWindowPositionNoSize(hwndDlg, hContact, MODULE, "ChangeDlg");
return TRUE;
}
case WM_COMMAND:
@@ -305,13 +305,13 @@ INT_PTR CALLBACK DlgProcChangeFeedOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LP {
TCHAR tszTagHelp[1024];
mir_sntprintf(tszTagHelp, SIZEOF(tszTagHelp), _T("%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s"),
- _T("#<title>#"), TranslateT("The title of the item."),
- _T("#<description>#"), TranslateT("The item synopsis."),
- _T("#<link>#"), TranslateT("The URL of the item."),
+ _T("#<title>#"), TranslateT("The title of the item."),
+ _T("#<description>#"), TranslateT("The item synopsis."),
+ _T("#<link>#"), TranslateT("The URL of the item."),
_T("#<author>#"), TranslateT("Email address of the author of the item."),
- _T("#<comments>#"), TranslateT("URL of a page for comments relating to the item."),
- _T("#<guid>#"), TranslateT("A string that uniquely identifies the item."),
- _T("#<category>#"), TranslateT("Specify one or more categories that the item belongs to.")
+ _T("#<comments>#"), TranslateT("URL of a page for comments relating to the item."),
+ _T("#<guid>#"), TranslateT("A string that uniquely identifies the item."),
+ _T("#<category>#"), TranslateT("Specify one or more categories that the item belongs to.")
);
MessageBox(hwndDlg, tszTagHelp, TranslateT("Feed Tag Help"), MB_OK);
}
@@ -351,8 +351,8 @@ INT_PTR CALLBACK DlgProcChangeFeedOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LP case WM_DESTROY:
{
HANDLE hContact = (HANDLE) GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
- Utils_SaveWindowPosition(hwndDlg,hContact,MODULE,"ChangeDlg");
- WindowList_Remove(hChangeFeedDlgList,hwndDlg);
+ Utils_SaveWindowPosition(hwndDlg, hContact, MODULE, "ChangeDlg");
+ WindowList_Remove(hChangeFeedDlgList, hwndDlg);
ItemInfo *SelItem = (ItemInfo*)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
delete SelItem;
break;
@@ -373,8 +373,8 @@ INT_PTR CALLBACK DlgProcChangeFeedMenu(HWND hwndDlg, UINT msg, WPARAM wParam, LP SendDlgItemMessage(hwndDlg, IDC_CHECKTIME, UDM_SETRANGE32, 0, 999);
HANDLE hContact = (HANDLE)lParam;
- WindowList_Add(hChangeFeedDlgList,hwndDlg,hContact);
- Utils_RestoreWindowPositionNoSize(hwndDlg,hContact,MODULE,"ChangeDlg");
+ WindowList_Add(hChangeFeedDlgList, hwndDlg, hContact);
+ Utils_RestoreWindowPositionNoSize(hwndDlg, hContact, MODULE, "ChangeDlg");
DBVARIANT dbNick = {0};
if (!DBGetContactSettingTString(hContact, MODULE, "Nick", &dbNick))
{
@@ -386,7 +386,7 @@ INT_PTR CALLBACK DlgProcChangeFeedMenu(HWND hwndDlg, UINT msg, WPARAM wParam, LP SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG)lParam);
SetDlgItemText(hwndDlg, IDC_FEEDURL, dbURL.ptszVal);
DBFreeVariant(&dbURL);
- SetDlgItemInt(hwndDlg, IDC_CHECKTIME, DBGetContactSettingDword(hContact, MODULE, "UpdateTime", 60), TRUE);
+ SetDlgItemInt(hwndDlg, IDC_CHECKTIME, DBGetContactSettingDword(hContact, MODULE, "UpdateTime", DEFAULT_UPDATE_TIME), TRUE);
DBVARIANT dbMsg = {0};
if (!DBGetContactSettingTString(hContact, MODULE, "MsgFormat", &dbMsg))
{
@@ -486,14 +486,14 @@ INT_PTR CALLBACK DlgProcChangeFeedMenu(HWND hwndDlg, UINT msg, WPARAM wParam, LP case IDC_TAGHELP:
{
TCHAR tszTagHelp[1024];
- mir_sntprintf(tszTagHelp, SIZEOF(tszTagHelp), _T("%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s"),
- _T("#<title>#"), TranslateT("The title of the item."),
- _T("#<description>#"), TranslateT("The item synopsis."),
- _T("#<link>#"), TranslateT("The URL of the item."),
+ mir_sntprintf(tszTagHelp, SIZEOF(tszTagHelp), _T("%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s"),
+ _T("#<title>#"), TranslateT("The title of the item."),
+ _T("#<description>#"), TranslateT("The item synopsis."),
+ _T("#<link>#"), TranslateT("The URL of the item."),
_T("#<author>#"), TranslateT("Email address of the author of the item."),
- _T("#<comments>#"), TranslateT("URL of a page for comments relating to the item."),
- _T("#<guid>#"), TranslateT("A string that uniquely identifies the item."),
- _T("#<category>#"), TranslateT("Specify one or more categories that the item belongs to.")
+ _T("#<comments>#"), TranslateT("URL of a page for comments relating to the item."),
+ _T("#<guid>#"), TranslateT("A string that uniquely identifies the item."),
+ _T("#<category>#"), TranslateT("Specify one or more categories that the item belongs to.")
);
MessageBox(hwndDlg, tszTagHelp, TranslateT("Feed Tag Help"), MB_OK);
}
@@ -564,6 +564,7 @@ INT_PTR CALLBACK UpdateNotifyOptsProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPA CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_ADDFEED), hwndDlg, DlgProcAddFeedOpts, (LPARAM)hwndList);
}
return FALSE;
+
case IDC_CHANGE:
{
ItemInfo SelItem = {0};
@@ -575,6 +576,7 @@ INT_PTR CALLBACK UpdateNotifyOptsProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPA CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_ADDFEED), hwndDlg, DlgProcChangeFeedOpts, (LPARAM)&SelItem);
}
return FALSE;
+
case IDC_REMOVE:
{
if (MessageBox(hwndDlg, TranslateT("Are you sure?"), TranslateT("Contact deleting"), MB_YESNO | MB_ICONWARNING) == IDYES)
@@ -612,8 +614,110 @@ INT_PTR CALLBACK UpdateNotifyOptsProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPA hContact = db_find_next(hContact);
}
}
- return FALSE;
}
+ return FALSE;
+
+ case IDC_IMPORT:
+ {
+ TCHAR FileName[MAX_PATH];
+ TCHAR *tszMirDir = Utils_ReplaceVarsT(_T("%miranda_path%"));
+
+ OPENFILENAME ofn = {0};
+ ofn.lStructSize = sizeof(ofn);
+ TCHAR tmp[MAX_PATH];
+ mir_sntprintf(tmp, SIZEOF(tmp), _T("%s (*.opml, *.xml)%c*.opml;*.xml%c%c"), TranslateT("OPML files"), 0, 0, 0);
+ ofn.lpstrFilter = tmp;
+ ofn.hwndOwner = 0;
+ ofn.lpstrFile = FileName;
+ ofn.nMaxFile = MAX_PATH;
+ ofn.nMaxFileTitle = MAX_PATH;
+ ofn.Flags = OFN_HIDEREADONLY;
+ ofn.lpstrInitialDir = tszMirDir;
+ *FileName = '\0';
+ ofn.lpstrDefExt = _T("");
+
+ if (GetOpenFileName(&ofn))
+ {
+ int bytesParsed = 0;
+ HXML hXml = xi.parseFile(FileName, &bytesParsed, NULL);
+ if(hXml != NULL)
+ {
+ HXML node = xi.getChildByPath(hXml, _T("opml/body/outline"), 0);
+ if ( !node)
+ node = xi.getChildByPath(hXml, _T("body/outline"), 0);
+ if (node)
+ {
+ while (node)
+ {
+ int outlineAttr = xi.getAttrCount(node);
+ int outlineChildsCount = xi.getChildCount(node);
+ TCHAR *type = (TCHAR*)xi.getAttrValue(node, _T("type"));
+ if ( !type && !outlineChildsCount)
+ //
+ node = xi.getNextNode(node);
+ else if (!type && outlineChildsCount)
+ {
+ //
+ node = xi.getFirstChild(node);
+ //if ( !node)
+
+ /*TCHAR *group = NULL;
+ for (int i = 0; i < outlineAttr; i++)
+ {
+ if (!lstrcmpi(xi.getAttrName(node, i), _T("title")))
+ {
+ group = (TCHAR*)xi.getAttrValue(node, xi.getAttrName(node, i));
+ break;
+ }
+ }
+
+ for (int i = 0; i < outlineChildsCount; i++)
+ {
+ HXML elem = xi.getChild(node, i);
+ }*/
+ } else if (type) {
+ TCHAR *title = NULL, *url = NULL;
+ for (int i = 0; i < outlineAttr; i++)
+ {
+ if (!lstrcmpi(xi.getAttrName(node, i), _T("title")))
+ {
+ title = (TCHAR*)xi.getAttrValue(node, xi.getAttrName(node, i));
+ continue;
+ }
+ if (!lstrcmpi(xi.getAttrName(node, i), _T("xmlUrl")))
+ {
+ url = (TCHAR*)xi.getAttrValue(node, xi.getAttrName(node, i));
+ continue;
+ }
+ }
+ HANDLE hContact = (HANDLE)CallService(MS_DB_CONTACT_ADD, 0, 0);
+ CallService(MS_PROTO_ADDTOCONTACT, (WPARAM)hContact, (LPARAM)MODULE);
+ db_set_ts(hContact, MODULE, "Nick", title);
+ db_set_ts(hContact, MODULE, "URL", url);
+ db_set_b(hContact, MODULE, "CheckState", 1);
+ db_set_dw(hContact, MODULE, "UpdateTime", DEFAULT_UPDATE_TIME);
+ db_set_ts(hContact, MODULE, "MsgFormat", _T(TAGSDEFAULT));
+ db_set_w(hContact, MODULE, "Status", CallProtoService(MODULE, PS_GETSTATUS, 0, 0));
+ node = xi.getNextNode(node);
+ }
+ }
+ } else
+ MessageBox(NULL, TranslateT("Not valid import file."), TranslateT("Error"), MB_OK | MB_ICONERROR);
+ xi.destroyNode(hXml);
+ } else
+ MessageBox(NULL, TranslateT("Not valid import file."), TranslateT("Error"), MB_OK | MB_ICONERROR);
+
+ DeleteAllItems(hwndList);
+ UpdateList(hwndList);
+ }
+ mir_free(tszMirDir);
+ }
+ return FALSE;
+
+ case IDC_EXPORT:
+ {
+ }
+ return FALSE;
case IDC_STARTUPRETRIEVE:
SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
diff --git a/plugins/NewsAggregator/Src/Services.cpp b/plugins/NewsAggregator/Src/Services.cpp index ff12ebe2a4..65b0210605 100644 --- a/plugins/NewsAggregator/Src/Services.cpp +++ b/plugins/NewsAggregator/Src/Services.cpp @@ -174,7 +174,7 @@ INT_PTR CheckAllFeeds(WPARAM wParam,LPARAM lParam) HANDLE hContact = db_find_first();
while (hContact != NULL)
{
- if (IsMyContact(hContact) && lParam && DBGetContactSettingDword(hContact, MODULE, "UpdateTime", 60))
+ if (IsMyContact(hContact) && lParam && DBGetContactSettingDword(hContact, MODULE, "UpdateTime", DEFAULT_UPDATE_TIME))
UpdateListAdd(hContact);
else if (IsMyContact(hContact) && !lParam)
UpdateListAdd(hContact);
@@ -239,7 +239,7 @@ INT_PTR NewsAggrGetAvatarInfo(WPARAM wParam, LPARAM lParam) // if GAIF_FORCE is set, we are updating the feed
// otherwise, cached avatar is used
- if (wParam & GAIF_FORCE && DBGetContactSettingDword(pai->hContact, MODULE, "UpdateTime", 60))
+ if (wParam & GAIF_FORCE && DBGetContactSettingDword(pai->hContact, MODULE, "UpdateTime", DEFAULT_UPDATE_TIME))
UpdateListAdd(pai->hContact);
if (db_get_b(NULL, MODULE, "AutoUpdate", 1) != 0 && !ThreadRunning)
mir_forkthread(UpdateThreadProc, (LPVOID)TRUE);
diff --git a/plugins/NewsAggregator/Src/Update.cpp b/plugins/NewsAggregator/Src/Update.cpp index 5a34bfb69b..677cade12b 100644 --- a/plugins/NewsAggregator/Src/Update.cpp +++ b/plugins/NewsAggregator/Src/Update.cpp @@ -36,10 +36,10 @@ VOID CALLBACK timerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime) {
if(IsMyContact(hContact))
{
- if (DBGetContactSettingDword(hContact, MODULE, "UpdateTime", 60))
+ if (DBGetContactSettingDword(hContact, MODULE, "UpdateTime", DEFAULT_UPDATE_TIME))
{
double diff = difftime(time(NULL), DBGetContactSettingDword(hContact, MODULE, "LastCheck", 0));
- if (db_get_b(NULL, MODULE, "AutoUpdate", 1) != 0 && diff >= DBGetContactSettingDword(hContact, MODULE, "UpdateTime", 60) * 60)
+ if (db_get_b(NULL, MODULE, "AutoUpdate", 1) != 0 && diff >= DBGetContactSettingDword(hContact, MODULE, "UpdateTime", DEFAULT_UPDATE_TIME) * 60)
{
UpdateListAdd(hContact);
HaveUpdates = TRUE;
diff --git a/plugins/NewsAggregator/Src/resource.h b/plugins/NewsAggregator/Src/resource.h index fbafab074f..d795f44add 100644 --- a/plugins/NewsAggregator/Src/resource.h +++ b/plugins/NewsAggregator/Src/resource.h @@ -1,6 +1,6 @@ //{{NO_DEPENDENCIES}}
-// , Microsoft Visual C++.
-// D:\Miranda NG\plugins\NewsAggregator\res\Resource.rc
+// Microsoft Visual C++ generated include file.
+// Used by C:\Temp\Myranda\plugins\NewsAggregator\res\Resource.rc
//
#define IDD_OPTIONS 101
#define IDI_ICON 109
@@ -16,8 +16,8 @@ #define IDC_ADD 1037
#define IDC_CHANGE 1038
#define IDC_REMOVE 1039
-#define IDC_IMORT 1040
-#define IDC_EXORT 1041
+#define IDC_IMPORT 1040
+#define IDC_EXPORT 1041
#define IDC_FEEDTITLE 1042
#define IDC_FEEDURL 1043
#define IDC_CHECKTIME 1044
diff --git a/plugins/NewsAggregator/docs/subscriptions_test.xml b/plugins/NewsAggregator/docs/subscriptions_test.xml new file mode 100644 index 0000000000..9a624c7fc9 --- /dev/null +++ b/plugins/NewsAggregator/docs/subscriptions_test.xml @@ -0,0 +1,175 @@ +<?xml version="1.0" encoding="UTF-8"?> +<opml version="1.0"> + <head> + <title>BasiL: подписки в Google Reader</title> + </head> + <body> + <outline text="ithappens" title="ithappens" type="rss" + xmlUrl="http://ithappens.ru/rss" htmlUrl="http://ithappens.ru/"/> + <outline title="Computerra" text="Computerra"> + <outline title="My_Test" text="My_Test"> + <outline text="bash" title="bash" type="rss" + xmlUrl="http://bash.im/rss" htmlUrl="http://bash.im/"/> + </outline> + <outline text="inside" title="inside" type="rss" + xmlUrl="http://www.ctinside.com/feeds/posts/default" htmlUrl="http://www.ctinside.com/"/> + <outline text="Компьюлента" title="Компьюлента" type="rss" + xmlUrl="http://www.compulenta.ru/rss.xml" htmlUrl="http://www.compulenta.ru"/> + <outline text="Статьи Компьютерры" + title="Статьи Компьютерры" type="rss" + xmlUrl="http://www.computerra.ru/rss.xml" htmlUrl="http://www.computerra.ru"/> + </outline> + <outline title="Soft" text="Soft"> + <outline + text="Downloads for project cm9-wildfire-s on Google Code" + title="Downloads for project cm9-wildfire-s on Google Code" + type="rss" + xmlUrl="https://code.google.com/feeds/p/cm9-wildfire-s/downloads/basic" htmlUrl="http://code.google.com/p/cm9-wildfire-s/downloads/list"/> + <outline text="Downloads for project uawks on Google Code" + title="Downloads for project uawks on Google Code" + type="rss" + xmlUrl="http://code.google.com/feeds/p/uawks/downloads/basic" htmlUrl="http://code.google.com/p/uawks/downloads/list"/> + <outline + text="Issue updates for project uawks on Google Code" + title="Issue updates for project uawks on Google Code" + type="rss" + xmlUrl="http://code.google.com/feeds/p/uawks/issueupdates/basic" htmlUrl="http://code.google.com/p/uawks/issues/list"/> + <outline + text="Mercurial commits to project uawks on Google Code" + title="Mercurial commits to project uawks on Google Code" + type="rss" + xmlUrl="http://code.google.com/feeds/p/uawks/hgchanges/basic" htmlUrl="http://code.google.com/p/uawks/source/list"/> + <outline text="Punk" title="Punk" type="rss" + xmlUrl="http://www.punksoftware.com/rss" htmlUrl="http://punklabs.com/rss"/> + <outline text="Tomato by Shibby" title="Tomato by Shibby" + type="rss" xmlUrl="http://tomato.groov.pl/?feed=rss2" htmlUrl="http://tomato.groov.pl"/> + <outline text="TOR" title="TOR" type="rss" + xmlUrl="http://rss.gmane.org/gmane.network.onion-routing.announce" htmlUrl="http://permalink.gmane.org/gmane.network.onion-routing.announce"/> + <outline text="VideoLAN" title="VideoLAN" type="rss" + xmlUrl="http://www.videolan.org/videolan-news.rss" htmlUrl="http://www.videolan.org/"/> + </outline> + <outline title="Miranda" text="Miranda"> + <outline text="Dev Blog" title="Dev Blog" type="rss" + xmlUrl="http://feeds.miranda-im.org/mirandadevjournal" htmlUrl="http://www.miranda-im.org"/> + <outline text="FLNew" title="FLNew" type="rss" + xmlUrl="http://feeds.miranda-im.org/mirandalast10add" htmlUrl="http://addons.miranda-im.org"/> + <outline text="FLupd" title="FLupd" type="rss" + xmlUrl="http://feeds.miranda-im.org/mirandalast10upd" htmlUrl="http://addons.miranda-im.org"/> + <outline text="mir-rl project updates - Google Code" + title="mir-rl project updates - Google Code" type="rss" + xmlUrl="http://code.google.com/feeds/p/mir-rl/updates/basic" htmlUrl="http://code.google.com/p/mir-rl/updates/list"/> + <outline text="Miranda IM" title="Miranda IM" type="rss" + xmlUrl="http://feeds.feedburner.com/mirandaannouncements" htmlUrl="http://www.miranda-im.org"/> + <outline text="Miranda IM Community" + title="Miranda IM Community" type="rss" + xmlUrl="http://community.livejournal.com/ru_mirandaim/data/rss" htmlUrl="http://ru-mirandaim.livejournal.com/"/> + <outline text="Miranda NG Tickets" + title="Miranda NG Tickets" type="rss" + xmlUrl="http://trac.miranda-ng.org/report/1?asc=1&format=rss" htmlUrl="http://trac.miranda-ng.org/report/1"/> + <outline + text="Miranda-Planet - ваша планета Miranda IM ( билды, сборки, скины, плагины, русификация, WiKi, Форум )" + title="Miranda-Planet - ваша планета Miranda IM ( билды, сборки, скины, плагины, русификация, WiKi, Форум )" + type="rss" xmlUrl="http://miranda-planet.com/rss.xml" htmlUrl="http://miranda-planet.com/"/> + <outline text="MirandaNG SVN" title="MirandaNG SVN" + type="rss" + xmlUrl="http://bugs.miranda-ng.org/log/?format=rss&limit=100&mode=stop_on_copy" htmlUrl="http://bugs.miranda-ng.org/log/?rev=4037"/> + <outline text="ruCommunity" title="ruCommunity" type="rss" + xmlUrl="http://forum.miranda.im/external.php?type=RSS2" htmlUrl="http://forum.miranda.im"/> + </outline> + <outline title="Habr" text="Habr"> + <outline text="Android" title="Android" type="rss" + xmlUrl="http://habrahabr.ru/rss/blogs/android/" htmlUrl="http://habrahabr.ru/rss/hub/android/"/> + <outline text="Design" title="Design" type="rss" + xmlUrl="http://habrahabr.ru/rss/blogs/design/" htmlUrl="http://habrahabr.ru/rss/hub/design/"/> + <outline text="DSLR" title="DSLR" type="rss" + xmlUrl="http://habrahabr.ru/rss/blogs/dslr/" htmlUrl="http://habrahabr.ru/rss/blog/dslr/"/> + <outline text="Future" title="Future" type="rss" + xmlUrl="http://habrahabr.ru/rss/blogs/the_future_is_here/" htmlUrl="http://habrahabr.ru/rss/hub/the_future_is_here/"/> + <outline text="Google" title="Google" type="rss" + xmlUrl="http://habrahabr.ru/rss/blogs/google/" htmlUrl="http://habrahabr.ru/rss/hub/google/"/> + <outline text="Hardware" title="Hardware" type="rss" + xmlUrl="http://habrahabr.ru/rss/blogs/hardware/" htmlUrl="http://habrahabr.ru/rss/hub/hardware/"/> + <outline text="IM" title="IM" type="rss" + xmlUrl="http://habrahabr.ru/rss/blogs/im/" htmlUrl="http://habrahabr.ru/rss/hub/im/"/> + <outline text="Jabber" title="Jabber" type="rss" + xmlUrl="http://habrahabr.ru/rss/blogs/jabber/" htmlUrl="http://habrahabr.ru/rss/blogs/jabber/"/> + <outline text="Miranda" title="Miranda" type="rss" + xmlUrl="http://habrahabr.ru/rss/blogs/miranda/" htmlUrl="http://habrahabr.ru/rss/blogs/miranda/"/> + <outline text="Netbook" title="Netbook" type="rss" + xmlUrl="http://habrahabr.ru/rss/blogs/netbook/" htmlUrl="http://habrahabr.ru/rss/hub/netbook/"/> + <outline text="OldThings" title="OldThings" type="rss" + xmlUrl="http://habrahabr.ru/rss/blogs/retro/" htmlUrl="http://habrahabr.ru/rss/blogs/retro/"/> + <outline text="Robots" title="Robots" type="rss" + xmlUrl="http://habrahabr.ru/rss/blogs/robot/" htmlUrl="http://habrahabr.ru/rss/hub/robot/"/> + <outline text="sciense" title="sciense" type="rss" + xmlUrl="http://habrahabr.ru/rss/blogs/popular_science/" htmlUrl="http://habrahabr.ru/rss/hub/popular_science/"/> + <outline text="TC" title="TC" type="rss" + xmlUrl="http://habrahabr.ru/rss/blogs/totalcmd/" htmlUrl="http://habrahabr.ru/rss/blogs/totalcmd/"/> + <outline text="Telecom" title="Telecom" type="rss" + xmlUrl="http://habrahabr.ru/rss/blogs/telecom/" htmlUrl="http://habrahabr.ru/rss/hub/telecom/"/> + <outline text="Win7" title="Win7" type="rss" + xmlUrl="http://habrahabr.ru/rss/blogs/windows7/" htmlUrl="http://habrahabr.ru/rss/blogs/windows7/"/> + <outline text="Хабрахабр / Биотехнологии / Захабренные" + title="Хабрахабр / Биотехнологии / Захабренные" + type="rss" + xmlUrl="http://habrahabr.ru/rss/blogs/biotech/" htmlUrl="http://habrahabr.ru/rss/hub/biotech/"/> + <outline text="Хабрахабр: Метки / wzor.net" + title="Хабрахабр: Метки / wzor.net" type="rss" + xmlUrl="http://habrahabr.ru/rss/tag/wzor.net/" htmlUrl="http://habrahabr.ru/rss/tag/wzor.net/"/> + </outline> + <outline title="News" text="News"> + <outline text="2КОМ (новости)" title="2КОМ (новости)" + type="rss" + xmlUrl="http://www.2kom.ru/home/news/-rss.xml" htmlUrl="http://www.2kom.ru/home/news.html"/> + <outline text="4PDA" title="4PDA" type="rss" + xmlUrl="http://4pda.ru/feed/" htmlUrl="http://4pda.ru/"/> + <outline text="FotoTips.ru" title="FotoTips.ru" type="rss" + xmlUrl="http://feeds.feedburner.com/fototipsru" htmlUrl="http://fototips.ru"/> + <outline text="LifeHack.ru" title="LifeHack.ru" type="rss" + xmlUrl="http://www.lifehack.ru/rss/" htmlUrl="http://lifehack.ru"/> + <outline text="MForum.ru" title="MForum.ru" type="rss" + xmlUrl="http://www.mforum.ru/rss/news.xml" htmlUrl="http://www.mforum.ru/"/> + <outline text="Overclockers.ru" title="Overclockers.ru" + type="rss" + xmlUrl="http://www.overclockers.ru/rss/all.rss" htmlUrl="http://www.overclockers.ru"/> + <outline text="revolver.ru" title="revolver.ru" type="rss" + xmlUrl="http://revolver.ru/rss" htmlUrl="http://revolver.ru/"/> + <outline text="Самый сок!" title="Самый сок!" type="rss" + xmlUrl="http://ibigdan.livejournal.com/data/rss" htmlUrl="http://ibigdan.livejournal.com/"/> + <outline text="Танки Онлайн" title="Танки Онлайн" type="rss" + xmlUrl="http://blog.tankionline.com/feed/" htmlUrl="http://news.tankionline.com"/> + <outline text="Фергана.Ру" title="Фергана.Ру" type="rss" + xmlUrl="http://news.ferghana.ru/news.xml" htmlUrl="http://www.fergananews.com"/> + </outline> + <outline title="TC" text="TC"> + <outline text="en.totalcmd.pl" title="en.totalcmd.pl" + type="rss" xmlUrl="http://en.totalcmd.pl/rss" htmlUrl="http://en.totalcmd.pl"/> + <outline text="tc" title="tc" type="rss" + xmlUrl="http://wincmd.ru/rss.xml" htmlUrl="http://wincmd.ru"/> + </outline> + <outline title="Science" text="Science"> + <outline text="Astronet" title="Astronet" type="rss" + xmlUrl="http://www.astronet.ru/db/rss.xml" htmlUrl="http://www.astronet.ru/"/> + <outline text="COPAH.info - Наука. Сибирь. Общество" + title="COPAH.info - Наука. Сибирь. Общество" type="rss" + xmlUrl="http://www.copah.info/rss" htmlUrl="http://www.copah.info/rss"/> + <outline text="LHC" title="LHC" type="rss" + xmlUrl="http://fulltextrssfeed.com/elementy.ru/rss/news/LHC" htmlUrl="http://elementy.ru/LHC/news"/> + <outline text="Membrana.ru" title="Membrana.ru" type="rss" + xmlUrl="http://ftr.fivefilters.org/makefulltextfeed.php?url=http%3A%2F%2Fwww.membrana.ru%2Fexport%2Frss.xml&max=1" htmlUrl="http://www.membrana.ru"/> + <outline text="Иванов" title="Иванов" type="rss" + xmlUrl="http://igorivanov.blogspot.com/feeds/posts/default" htmlUrl="http://igorivanov.blogspot.com/"/> + <outline text="НаукаИжизнь" title="НаукаИжизнь" type="rss" + xmlUrl="http://fulltextrssfeed.com/www.nkj.ru/rss/iblock_rss_31.xml" htmlUrl="http://www.nkj.ru"/> + <outline text="Элементы" title="Элементы" type="rss" + xmlUrl="http://fulltextrssfeed.com/elementy.ru/rss/news" htmlUrl="http://elementy.ru/"/> + </outline> + <outline title="Moviez" text="Moviez"> + <outline text="Twitter / kuraj_bambey" + title="Twitter / kuraj_bambey" type="rss" + xmlUrl="http://twitter.com/statuses/user_timeline/44353505.rss" htmlUrl="http://twitter.com/kuraj_bambey"/> + <outline text="Мосенька" title="Мосенька" type="rss" + xmlUrl="http://feed.rutracker.org/atom/u/0/26/3796626.atom" htmlUrl="http://rutracker.org/forum/profile.php?mode=viewprofile&u=3796626"/> + </outline> + </body> +</opml> |