RSS READER@klopix

RSS Reader is a configurable manager to load and display RSS (Really Simple Syndication) content/ Weather Station sensor data/ text/ etc. It organizes fetched information in different styles and formats and then puts it on the TV broadcasting air by producing a special data file.

Features
→ Sources: RSS/ WEATHER (temperature, humidity, wind, etc)/ Plain TEXT/ TIME/ DATE
→ Sources & Tasks logic: many sources can be included into one task and be displayed in different styles on the TV air
→ Sources status: stopped/ running/ problem(light)/ problem(dead) & auto-recovering from problem state mechanism
→ Dockable panels GUI (MS MFC Feature Pack)

Resources I've used
→ MS MFC Feature Pack
→ GPI Weather Sensor Manager (COM)
→ MSXML Parser (COM)
→ MS CInternetFile

              
 

Feb 27 2010
Multiple app settings (not projects)

[Issue] Multiple app instances
[Owner] QA
[Status] +
[Description] Each app instance is launced with command line argument "#N" and stores settings in corresponding branch in the registry.
[ToDo] + Move all app-relevant settings from single registry section to instance specific ones.
[ToDo] + Include app instance into title.
[ToDo] + {Fix} App instance cmdline number is considered as a project file. Just don't call the ParseCommandLine() method in InitInstance(). And cmdLine object will stay with the following inner values:
cmdInfo.m_strDriverName.Empty();
cmdInfo.m_strFileName.Empty();
cmdInfo.m_strPortName.Empty();
cmdInfo.m_strPrinterName.Empty();
cmdInfo.m_bRegisterPerUser = FALSE;
cmdInfo.m_bRunAutomated = FALSE;
cmdInfo.m_bRunEmbedded = FALSE;
cmdInfo.m_bShowSplash = TRUE;
cmdInfo.m_nShellCommand = CCommandLineInfo::FileNew;
I can even manually re-write these members after call to ParseCommandLine() if there is no way to avoid calling it.
[ToDo] + Prevent two identical instances to run simultaneously (check on start if the instance is already running). //Took me 6 hours to find out
Finally, http://vcfaq.mvps.org/mfc/2.htm
[Q] How to enumerate window minimized to tray?
TrayNotifyWnd
TrayClockWClass
SysPager
ToolbarWindow32
ReBarWindow32
MsTaskSwWClass
→This question is going to remain up in the air, since I've found another 100% working solution to single instance app via Mutex.
[ToDo] + Enable option to specify both app instance and input project filepath simultaneously.
Specified app instance number & project file path
$$<app_name> #<number> file_path
Only project file, app instance number (by default) 1.
$$<app_name> file_path
Nothing specified, app instance number (by default) 1.
$$<app_name> file_path
[ToDo] + Language switching.
[Q] On .s4rc double-click which instance to open?
→ #1.
[Q] How double-click-on-project-file mechanism works?
→ God only knows, but I don't need it right now.
[ToDo] + Localize "app already running" msgbox by loading language library BEFORE app running detection mechanism works.
[ToDo] + Change tray tooltip so that it reflects instance number.

Feb 16 2010
Put images between news

[Issue] Insert images into RSS
[Owner] Consumer
[Status] +
[Description] They need RSS source to be interlaced with a specified image. So that every item is followed by a specified image. And make it an option.
Active: [x] _________________________ (browse...)
Passive: [ ] *all hidden/disabled*
[ToDo] + XML attrs.
[ToDo] + XML Save/Load.
[ToDo] + Dlg Load.
[ToDo] + Dlg GUI.
[ToDo] + Dlg empty image warning msgbox.
[ToDo] + Actual interlacing news with images.

Feb 11 2010
Autorun

[Issue] Autostart with Windows option
[Owner] SD
[Status] +
[Description] Add an option to autostart the app on OS start.
[ToDo] + (Settings option) autostart with Windows.
[Q] How do I make my app autorunable on Windows start without external modifications – only implementing additional code inside the app?
[Solution] Write an entry into registry thread:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
Entry_Name: <app_name>
Entry_Value: <path>
[Q] How do I put an entry into non-app branch of the registry?
[Solution]
(1) LONG lResult = RegOpenKeyEx(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Windows\\CurrentVersion\\Run\\"), 0, KEY_ALL_ACCESS, &hKey);
(2) CRegKey cKey (hKey);
lResult = cKey.SetStringValue(str_filename, enable? _T("\"") + str_pathfile + _T("\""): _T(""));
cKey.Close();
[ToDo] + Make transparent static fields placed close to check boxes capable of changing its state. //4
[ToDo] + Separate settings modifications into 2 groups: project and application. And if CPSetDlg.DoModal() returns IDOK, it doesn't necessarily mean I should put an asterisk (*) on app title, ONLY if project settings were modified.
++ Project:
(1) project file,
(2) autostop sources. //4
++ App:
(1) autorun app,
(2) minimize on start,
(3) launch tasks (if any) on start. //4
[ToDo] + (Settings option) minimize to tray on start. //5
[ToDo] + (Settings option) launch tasks on start (if a previous project is available). //5
And don't verify tasks if autorun enabled. Because autorun usually means we want this work automatically without any external cooperation, but verification needs interactivity, so I just turn it off in autorun mode. And run tasks unfixed.

Ivan Yurlagin,