From pouchintv-svn at baysse.fr Mon Oct 20 22:04:22 2008
From: pouchintv-svn at baysse.fr (pouchintv-svn at baysse.fr)
Date: Mon, 20 Oct 2008 22:04:22 +0200 (CEST)
Subject: [Pouchintv-dev] [PouchinTVMod] lolo_32 | r130 - trunk
Message-ID: <20081020200422.34A795F330@mail.baysse.fr>
Author: lolo_32
Date: 2008-10-20 22:04:21 +0200 (lun, 20 oct 2008)
New Revision: 130
Modified:
trunk/LCD.cpp
trunk/LCD.h
trunk/Pouchin TV.vcproj
trunk/main.cpp
Log:
* LCD.cpp, LCD.h, main.cpp: correction d'un boggue empêchant de compiler si on active la gestion du LCD logitech
* Pouchin TV.vcproj: reclassement des icônes dans le projet
Modifié: trunk/LCD.cpp
===================================================================
--- trunk/LCD.cpp 2008-06-01 10:07:19 UTC (rev 129)
+++ trunk/LCD.cpp 2008-10-20 20:04:21 UTC (rev 130)
@@ -256,13 +256,13 @@
strcpy_s(this->m_chaine, 256, nomChaine);
}
-void CLcd::SetProgrammeActuel(const char *heure, const char *programme){
- strcpy_s(this->m_heure_actuel, 32, heure);
+void CLcd::SetProgrammeActuel(const SYSTEMTIME &heure, const char *programme){
+ sprintf_s(this->m_heure_actuel, 32, "%d:%d:%d", heure.wHour, heure.wMinute, heure.wSecond);
strcpy_s(this->m_prog_actuel, 256, programme);
}
-void CLcd::SetProgrammeSuivant(const char *heure, const char *programme){
- strcpy_s(this->m_heure_suivant, 32, heure);
+void CLcd::SetProgrammeSuivant(const SYSTEMTIME &heure, const char *programme){
+ sprintf_s(this->m_heure_suivant, 32, "%d:%d:%d", heure.wHour, heure.wMinute, heure.wSecond);
strcpy_s(this->m_prog_suivant, 256, programme);
}
Modifié: trunk/LCD.h
===================================================================
--- trunk/LCD.h 2008-06-01 10:07:19 UTC (rev 129)
+++ trunk/LCD.h 2008-10-20 20:04:21 UTC (rev 130)
@@ -82,9 +82,9 @@
void SetChaine(const char *nomChaine);
// Définit le programme actuel
- void SetProgrammeActuel(const char *heure, const char *programme);
+ void SetProgrammeActuel(const SYSTEMTIME &heure, const char *programme);
// Définit le programme suivant
- void SetProgrammeSuivant(const char *heure, const char *programme);
+ void SetProgrammeSuivant(const SYSTEMTIME &heure, const char *programme);
// Fait passer le programme suivant en programme actuel
void SetSuivant();
Modifié: trunk/Pouchin TV.vcproj
===================================================================
--- trunk/Pouchin TV.vcproj 2008-06-01 10:07:19 UTC (rev 129)
+++ trunk/Pouchin TV.vcproj 2008-10-20 20:04:21 UTC (rev 130)
@@ -1090,74 +1090,81 @@
+
+
Author: lolo_32
Date: 2008-10-26 12:19:26 +0100 (dim, 26 oct 2008)
New Revision: 131
Modified:
trunk/LCD.cpp
trunk/LCD.h
trunk/Programme_Install.nsi
trunk/main.cpp
Log:
LCD.*
* affichage des heures sur 2 chiffres en permanence.
Programme_Install.nsi
* ajout des fichiers manquants à l'installation 64 bits.
main.cpp
* correction d'un boggue empêchant la mise à jour de la liste des chaînes dans le menu;
* rectification d'un retours de valeur oublié dans le traitement de la fenêtre principale.
Modifié: trunk/LCD.cpp
===================================================================
--- trunk/LCD.cpp 2008-10-20 20:04:21 UTC (rev 130)
+++ trunk/LCD.cpp 2008-10-26 11:19:26 UTC (rev 131)
@@ -257,12 +257,12 @@
}
void CLcd::SetProgrammeActuel(const SYSTEMTIME &heure, const char *programme){
- sprintf_s(this->m_heure_actuel, 32, "%d:%d:%d", heure.wHour, heure.wMinute, heure.wSecond);
+ sprintf_s(this->m_heure_actuel, 32, "%02d:%02d:%02d", heure.wHour, heure.wMinute, heure.wSecond);
strcpy_s(this->m_prog_actuel, 256, programme);
}
void CLcd::SetProgrammeSuivant(const SYSTEMTIME &heure, const char *programme){
- sprintf_s(this->m_heure_suivant, 32, "%d:%d:%d", heure.wHour, heure.wMinute, heure.wSecond);
+ sprintf_s(this->m_heure_suivant, 32, "%02d:%02d:%02d", heure.wHour, heure.wMinute, heure.wSecond);
strcpy_s(this->m_prog_suivant, 256, programme);
}
Modifié: trunk/LCD.h
===================================================================
--- trunk/LCD.h 2008-10-20 20:04:21 UTC (rev 130)
+++ trunk/LCD.h 2008-10-26 11:19:26 UTC (rev 131)
@@ -95,4 +95,4 @@
// Indique si le LCD est initialisé
bool IsInitialise() { return this->m_initialise; }
-};
\ Pas de fin de ligne à la fin du fichier
+};
Modifié: trunk/Programme_Install.nsi
===================================================================
--- trunk/Programme_Install.nsi 2008-10-20 20:04:21 UTC (rev 130)
+++ trunk/Programme_Install.nsi 2008-10-26 11:19:26 UTC (rev 131)
@@ -169,6 +169,10 @@
SetShellVarContext all
File "x64\Release\PouchinTVMod_x64.exe"
+ File "AUTHORS"
+ File "gpl.txt"
+ File "canaux.ini"
+ File "REFERENCES"
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
@@ -236,11 +240,17 @@
SectionEnd
Section "Françaises locales" IconesFRLocales
- SetOutPath "$INSTDIR\Icones"
+ SetOutPath "$INSTDIR\Icones\Locales"
;Ajout des icones des chaines locales
File "Icones\Locales\*.bmp"
SectionEnd
+ Section "Allemandes" IconesAllemendes
+ SetOutPath "$INSTDIR\Icones\Allemandes"
+ ;Ajout des icones des chaines locales
+ File "Icones\Allemandes\*.bmp"
+ SectionEnd
+
SectionGroupEnd
Function .onInit
Modifié: trunk/main.cpp
===================================================================
--- trunk/main.cpp 2008-10-20 20:04:21 UTC (rev 130)
+++ trunk/main.cpp 2008-10-26 11:19:26 UTC (rev 131)
@@ -131,7 +131,7 @@
wchar_t pouchindir_conf[MAX_PATH];
#ifdef USE_LOGITECH_LCD
-// LCD pour ceux quie en possède un
+// LCD pour ceux qui en possède un
CLcd lcd;
#endif // #ifdef USE_LOGITECH_LCD
@@ -1409,6 +1409,10 @@
rect.left, rect.top, rect.right-rect.left, rect.bottom-rect.top, wPosFlags);
}
+ // Met à jour le menu, car "Chaînes" et "Pistes" ne sont pas mis à jours sans les bordures
+ if (nouvel_etat == etf_normal || nouvel_etat == etf_maximized)
+ update_all_menus(hMainWnd);
+
change_etat_curseur(nouveau_curseur);
}
@@ -2489,7 +2493,7 @@
break;
}
- return lRet;
+ return lRet;
}
static void verifie_repertoire_captures(LPWSTR dir, size_t dir_size, int csidl_default, LPCSTR dirUsage)
From pouchintv-svn at baysse.fr Sun Oct 26 14:36:37 2008
From: pouchintv-svn at baysse.fr (pouchintv-svn at baysse.fr)
Date: Sun, 26 Oct 2008 14:36:37 +0100 (CET)
Subject: [Pouchintv-dev] [PouchinTVMod] gingko | r132 - trunk/Icones/Locales
Message-ID: <20081026133637.4BC545F32F@mail.baysse.fr>
Author: gingko
Date: 2008-10-26 14:36:37 +0100 (dim, 26 oct 2008)
New Revision: 132
Added:
trunk/Icones/Locales/TV RENNES 35.bmp
Log:
Ajout d'une icône TV Rennes 35 (chaîne locale).
Ajouté: trunk/Icones/Locales/TV RENNES 35.bmp
===================================================================
(les fichiers binaires diffèrent)
Property changes on: trunk/Icones/Locales/TV RENNES 35.bmp
___________________________________________________________________
Nom : svn:mime-type
+ application/octet-stream
From pouchintv-dev at baysse.fr Sun Oct 26 20:43:31 2008
From: pouchintv-dev at baysse.fr (=?iso-8859-1?q?Liste_utilis=E9e_par_les_d=E9veloppeurs?=)
Date: Sun, 26 Oct 2008 20:43:31 +0100 (CET)
Subject: [Pouchintv-dev] [PouchinTVMod] lolo_32 | r133 - in trunk: . docs
Message-ID: <20081026194331.82B3D5F376@mail.baysse.fr>
Author: lolo_32
Date: 2008-10-26 20:43:31 +0100 (dim, 26 oct 2008)
New Revision: 133
Added:
trunk/docs/Error and Success Codes.odt
Modified:
trunk/LCD.cpp
trunk/base.h
trunk/channels.cpp
trunk/graph.cpp
trunk/ini.cpp
trunk/internet.cpp
trunk/main.cpp
trunk/main.h
trunk/network.cpp
trunk/recprog.cpp
trunk/recprog.h
trunk/res.rc
trunk/resource.h
trunk/search.cpp
trunk/settings.cpp
trunk/xml.cpp
Log:
channels.cpp, main.cpp, search.cpp, settings.cpp
* Ajout de commentaires en sortie dans la fenêtre de la console pour le debogguage : liste les codecs, cartes tuners, paramètres passés, etc.
ini.cpp, search.cpp
* Changement des types des variables pour refléter leur véritables valeurs.
LCD.cpp
* Suppression des tailles en dur, elles sont maintenant calculées à l'aide de "sizeof" ou de "_countof".
main.cpp
* Refonte de la gestion des paramètres en ligne de commande, et ajout de nouvelles fonctions (qui ont priorité sur les valeurs enregistrées) :
* "-fs" pour démarrer en plein écran,
* "-maxi" pour démarrer en mode maximisé,
* "-noborders" affiche une fenêtre sans menus ni barres d'état,
* "-normal" démarre en mode fenêtré normal,
* "-recps" lance l'enregistrement de la chaîne de démarrage en mode PS,
* "-rects" identique ci dessus, mais en mode TS,
* "-chXX" change de chaîne au démarrage (attention, on passe le numéro de la chaîne, tel que 10 pour TMC par défaut pour la France).
res.rc, main.cpp
* ajout des raccourcis pour le support des télécommandes Pinnacle.
settings.cpp
* la fonction extrait_combo() posait des problèmes dans certains cas, quand elle utilisait une liste déroulante vide;
* ajout d'une fonction permettant de sélectionner l'élément dans une liste déroulante ne contenant qu'un choix.
xml.cpp
* Efface le buffer spécifié avant usage.
Divers fichiers
* Ajout de commentaires, reformatage.
Ajout de la liste des codes d'erreurs DirectMedia
Modifié: trunk/LCD.cpp
===================================================================
--- trunk/LCD.cpp 2008-10-26 13:36:37 UTC (rev 132)
+++ trunk/LCD.cpp 2008-10-26 19:43:31 UTC (rev 133)
@@ -51,18 +51,18 @@
return;
}
- ZeroMemory(m_chaine, 256);
- ZeroMemory(m_heure_actuel, 32);
- ZeroMemory(m_prog_actuel, 256);
- ZeroMemory(m_heure_suivant, 32);
- ZeroMemory(m_prog_suivant, 256);
+ ZeroMemory(this->m_chaine, sizeof(this->m_chaine));
+ ZeroMemory(this->m_heure_actuel, sizeof(this->m_heure_actuel));
+ ZeroMemory(this->m_prog_actuel, sizeof(this->m_prog_actuel));
+ ZeroMemory(this->m_heure_suivant, sizeof(this->m_heure_suivant));
+ ZeroMemory(this->m_prog_suivant, sizeof(this->m_prog_suivant));
// Définit la police par défaut à utiliser ainsi que ses attributs
// Taille de la police
LOGFONT lf;
ZeroMemory(&lf, sizeof(lf));
GetObject(m_police, sizeof(lf), &lf);
- lf.lfHeight = 12;//-MulDiv(DEFAULT_POINTSIZE, DEFAULT_DPI, 72);
+ lf.lfHeight = 12;
wcscpy(lf.lfFaceName, L"Arial");
this->m_police = CreateFontIndirect(&lf);
lf.lfHeight = 11;
@@ -153,7 +153,7 @@
// Associe l'ouverture à la connexion
this->m_openContext.connection = this->m_connectContext.connection;
// Choisie le LCD à utiliser
- this->m_openContext.index = 0; // permier LCD
+ this->m_openContext.index = 0; // premier LCD
// Handle de l'ouverture
this->m_openContext.device = LGLCD_INVALID_DEVICE;
// Pas de configuration à l'aide des boutons
@@ -209,7 +209,7 @@
// actualise l'affichage
ret = lgLcdUpdateBitmap(this->m_openContext.device, &(bitmap.hdr), LGLCD_ASYNC_UPDATE(LGLCD_PRIORITY_NORMAL));
- ZeroMemory(&winbitmap, 860);
+ ZeroMemory(&winbitmap, sizeof(winbitmap));
SetBitmapBits(this->m_bitmap, 860, &winbitmap);
return ERROR_SUCCESS;
@@ -253,23 +253,23 @@
}
void CLcd::SetChaine(const char *nomChaine){
- strcpy_s(this->m_chaine, 256, nomChaine);
+ strncpy_s(this->m_chaine, _countof(this->m_chaine), nomChaine, _countof(this->m_chaine)-1);
}
void CLcd::SetProgrammeActuel(const SYSTEMTIME &heure, const char *programme){
- sprintf_s(this->m_heure_actuel, 32, "%02d:%02d:%02d", heure.wHour, heure.wMinute, heure.wSecond);
- strcpy_s(this->m_prog_actuel, 256, programme);
+ TimeToStr(heure, this->m_heure_actuel, _countof(this->m_heure_actuel));
+ strncpy_s(this->m_prog_actuel, _countof(this->m_prog_actuel), programme, _countof(this->m_prog_actuel));
}
void CLcd::SetProgrammeSuivant(const SYSTEMTIME &heure, const char *programme){
- sprintf_s(this->m_heure_suivant, 32, "%02d:%02d:%02d", heure.wHour, heure.wMinute, heure.wSecond);
- strcpy_s(this->m_prog_suivant, 256, programme);
+ TimeToStr(heure, this->m_heure_suivant, _countof(this->m_heure_suivant));
+ strncpy_s(this->m_prog_suivant, _countof(this->m_prog_suivant), programme, _countof(this->m_prog_suivant)-1);
}
void CLcd::SetSuivant(){
- strcpy_s(this->m_heure_actuel, 32, this->m_heure_suivant);
- ZeroMemory(this->m_heure_suivant, 32);
+ strcpy_s(this->m_heure_actuel, _countof(this->m_heure_actuel), this->m_heure_suivant);
+ ZeroMemory(this->m_heure_suivant, sizeof(this->m_heure_suivant));
- strcpy_s(this->m_prog_actuel, 256, this->m_prog_suivant);
- ZeroMemory(this->m_prog_suivant,256);
+ strcpy_s(this->m_prog_actuel, _countof(this->m_prog_actuel), this->m_prog_suivant);
+ ZeroMemory(this->m_prog_suivant, sizeof(this->m_prog_suivant));
}
Modifié: trunk/base.h
===================================================================
--- trunk/base.h 2008-10-26 13:36:37 UTC (rev 132)
+++ trunk/base.h 2008-10-26 19:43:31 UTC (rev 133)
@@ -79,21 +79,21 @@
#include "console.h"
#ifdef _DEBUG
-# define EXPORT_GRAPH 1
-# define LOG_DSHOW 1 // Enregistrer DShow
+# define EXPORT_GRAPH 1
+# define LOG_DSHOW 1 // Enregistrer DShow
#else
-# define EXPORT_GRAPH 0
-# define LOG_DSHOW 0
+# define EXPORT_GRAPH 0
+# define LOG_DSHOW 0
#endif
// Activer le LCD Logitech
//#define USE_LOGITECH_LCD
// Nombre max de chaînes
-#define NB_MAX_CHAINES 500
+#define NB_MAX_CHAINES 500
// Nombre max d'enregistrements simultanés sur un même multiplex
-#define NB_MAX_ENREG 3
+#define NB_MAX_ENREG 3
///////////////////////////////////////////////////////////////////
//
Modifié: trunk/channels.cpp
===================================================================
--- trunk/channels.cpp 2008-10-26 13:36:37 UTC (rev 132)
+++ trunk/channels.cpp 2008-10-26 19:43:31 UTC (rev 133)
@@ -235,20 +235,19 @@
void change_frequence(ULONG freq)
{
HRESULT hr = pBDAControl->StartChanges();
+ myprintf(L"%?change_frequence pBDAControl->StartChanges(), hr=0x%08x\n", FAILED(hr), hr);
- myprintf(L"%?1, hr=0x%08x\n", FAILED(hr), hr);
-
hr = pBDAFreq->put_Bandwidth(8);
- myprintf(L"%?2, hr=0x%08x\n", FAILED(hr), hr);
+ myprintf(L"%?change_frequence pBDAFreq->put_Bandwidth(8), hr=0x%08x\n", FAILED(hr), hr);
hr = pBDAFreq->put_Frequency(freq);
- myprintf(L"%?3, hr=0x%08x\n", FAILED(hr), hr);
+ myprintf(L"%?change_frequence pBDAFreq->put_Frequency(%ul), hr=0x%08x\n", FAILED(hr), freq, hr);
hr = pBDAControl->CheckChanges();
- myprintf(L"%?4, hr=0x%08xn", FAILED(hr), hr);
+ myprintf(L"%?change_frequence pBDAControl->CheckChanges(), hr=0x%08xn", FAILED(hr), hr);
hr = pBDAControl->CommitChanges();
- myprintf(L"%?5, hr=0x%08x\n", FAILED(hr), hr);
+ myprintf(L"%?change_frequence pBDAControl->CommitChanges(), hr=0x%08x\n", FAILED(hr), hr);
}
// S'assurer que le VMR a été initialisé :
Ajouté: trunk/docs/Error and Success Codes.odt
===================================================================
(les fichiers binaires diffèrent)
Property changes on: trunk/docs/Error and Success Codes.odt
___________________________________________________________________
Nom : svn:mime-type
+ application/vnd.oasis.opendocument.text
Modifié: trunk/graph.cpp
===================================================================
--- trunk/graph.cpp 2008-10-26 13:36:37 UTC (rev 132)
+++ trunk/graph.cpp 2008-10-26 19:43:31 UTC (rev 133)
@@ -25,25 +25,18 @@
* See http://pouchintv.baysse.fr/ for updates.
*/
#include "network.h"
-
#include "epgfilter.h"
-
#include "pmtfilter.h"
-
#include "base.h"
-
#include "graph.h"
-
#include "main.h"
-
#include "search.h"
-
#include "ini.h"
-
#include "record.h"
-
#include "mpeg2defs.h"
+#include
+
IFilterGraph2 * pGraph = NULL;
IMediaControl * pControl = NULL;
@@ -82,13 +75,15 @@
static HRESULT AddToRot()
{
- IMoniker * pMoniker;
- IRunningObjectTable *pROT;
+ IMoniker * pMoniker = NULL;
+ IRunningObjectTable *pROT = NULL;
+
if (FAILED(GetRunningObjectTable(0, &pROT))) {
return E_FAIL;
}
WCHAR wsz[256];
- wsprintfW(wsz, L"FilterGraph %08x pid %08x", (DWORD_PTR)pGraph, GetCurrentProcessId());
+ StringCchPrintfW(wsz, _countof(wsz), L"FilterGraph %08x pid %08x", (DWORD_PTR)pGraph, GetCurrentProcessId());
+
HRESULT hr = CreateItemMoniker(L"!", wsz, &pMoniker);
if (SUCCEEDED(hr)) {
hr = pROT->Register(ROTFLAGS_REGISTRATIONKEEPSALIVE, pGraph,
@@ -1059,7 +1054,6 @@
}
// connect Tuner
-
hr = connect_filters(pNetworkProvider, pNetworkTuner);
if (FAILED(hr)) {
erreur(L"Tuner TNT non compatible, veuillez effacer config.ini et redémarrer", hr);
@@ -1067,7 +1061,6 @@
}
// connect Receiver
-
hr = connect_filters(pNetworkTuner, pReceiverComponent);
if (FAILED(hr)) {
erreur(L"Récepteur TNT non compatible, veuillez effacer config.ini et redémarrer", hr);
@@ -1082,7 +1075,6 @@
// USB
// connect USB
-
hr = pGraph->AddFilter(pNetworkTuner, L"Tuner USB");
if (FAILED(hr)) {
erreur(L"Tuner USB pas inséré", hr);
@@ -1103,7 +1095,6 @@
return E_FAIL;
}
-
hr = getFrequencyFilter(pNetworkTuner);
if (FAILED(hr) || pBDAFreq == NULL) {
erreur(L"Pas trouvé l'interface pour changer de fréquence", hr);
@@ -1116,8 +1107,7 @@
return hr;
}
-
- // ajoute pGrabber filter
+ // ajoute pGrabber filter
{
// connect 3
@@ -1171,7 +1161,6 @@
// fin des recherches, ajoute tout dans le graph
-
// connections
hr = cree_and_render_pins();
Modifié: trunk/ini.cpp
===================================================================
--- trunk/ini.cpp 2008-10-26 13:36:37 UTC (rev 132)
+++ trunk/ini.cpp 2008-10-26 19:43:31 UTC (rev 133)
@@ -52,35 +52,36 @@
#define freq_canal(x) (x * 8000 + freq_offset)
-static wchar_t config_file[] = L"\\config.ini";
-static wchar_t ini_config[] = L"Config";
+static wchar_t config_file[] = L"config.ini";
+static wchar_t ini_config[] = L"Config";
#if _DEBUG
-static wchar_t ini_filtre_MPEG2[] = L"Filtre MPEG2 (debug)";
-static wchar_t ini_filtre_audio[] = L"Filtre audio (debug)";
-static wchar_t ini_filtre_ac3[] = L"Filtre AC3 (debug)";
+static wchar_t ini_filtre_MPEG2[] = L"Filtre MPEG2 (debug)";
+static wchar_t ini_filtre_audio[] = L"Filtre audio (debug)";
+static wchar_t ini_filtre_ac3[] = L"Filtre AC3 (debug)";
#else // #if _DEBUG
-static wchar_t ini_filtre_MPEG2[] = L"Filtre MPEG2";
-static wchar_t ini_filtre_audio[] = L"Filtre audio";
-static wchar_t ini_filtre_ac3[] = L"Filtre AC3";
+static wchar_t ini_filtre_MPEG2[] = L"Filtre MPEG2";
+static wchar_t ini_filtre_audio[] = L"Filtre audio";
+static wchar_t ini_filtre_ac3[] = L"Filtre AC3";
#endif // #if _DEBUG
-static wchar_t ini_nom_ville[] = L"Ville";
-static wchar_t ini_strict[] = L"Recherche stricte";
-static wchar_t ini_chaine_courante[] = L"Identifiant chaîne courante";
-static wchar_t ini_rep_video[] = L"Répertoire vidéo";
-static wchar_t ini_rep_screen[] = L"Répertoire screenshots";
-static wchar_t ini_priorite[] = L"Priorité";
-static wchar_t ini_tuner[] = L"Tuner TNT";
-static wchar_t ini_receiver[] = L"Récepteur TNT";
-static wchar_t ini_offset_tuner[] = L"Offset tuner";
-static wchar_t ini_msn[] = L"Envoie programme regardé à MSN";
-static wchar_t ini_always_on_top[] = L"Fenêtre toujours devant";
-static wchar_t ini_ac3_defaut[] = L"Utilise AC3 quand dispo";
+static wchar_t ini_nom_ville[] = L"Ville";
+static wchar_t ini_strict[] = L"Recherche stricte";
+static wchar_t ini_chaine_courante[]= L"Identifiant chaîne courante";
+static wchar_t ini_rep_video[] = L"Répertoire vidéo";
+static wchar_t ini_rep_screen[] = L"Répertoire screenshots";
+static wchar_t ini_priorite[] = L"Priorité";
+static wchar_t ini_tuner[] = L"Tuner TNT";
+static wchar_t ini_receiver[] = L"Récepteur TNT";
+static wchar_t ini_offset_tuner[] = L"Offset tuner";
+static wchar_t ini_msn[] = L"Envoie programme regardé à MSN";
+static wchar_t ini_always_on_top[] = L"Fenêtre toujours devant";
+static wchar_t ini_ac3_defaut[] = L"Utilise AC3 quand dispo";
static wchar_t ini_suspend_minimized[] = L"Suspendre si minimisé";
static wchar_t ini_minimize_system_tray[] = L"Minimiser dans le system tray";
static wchar_t ini_allow_stream_record[] = L"Enregistrement multiplex autorisé";
-static wchar_t ini_use_all_width[] = L"Utilise toute la largeur";
-static wchar_t ini_etirer_video[] = L"Étirer la vidéo";
-static wchar_t ini_zoom_ratio[] = L"Facteur de zoom";
+static wchar_t ini_use_all_width[] = L"Utilise toute la largeur";
+static wchar_t ini_etirer_video[] = L"Étirer la vidéo";
+static wchar_t ini_zoom_ratio[] = L"Facteur de zoom";
+static wchar_t ini_volume[] = L"Volume";
static wchar_t ini_position_fenetre[]=L"Position fenêtre";
@@ -88,10 +89,8 @@
static wchar_t ini_position_console[]=L"Position console";
#endif // #if USE_CONSOLE==1
-static wchar_t ini_volume[] = L"Volume";
-
static wchar_t ini_use_vmr_deinterlace[]=L"Utilise le désentrelacement du VMR";
-static wchar_t ini_etat_fenetre[]=L"État fenêtre";
+static wchar_t ini_etat_fenetre[] =L"État fenêtre";
NomProtege::NomProtege(LPCSTR src, char remplacement)
{
@@ -473,7 +472,7 @@
CXMLNode * pNode = children[i];
Chaine canal;
- memset(&canal, 0, sizeof(Chaine));
+ ZeroMemory(&canal, sizeof(Chaine));
pNode->getStr(L"Nom", canal.nom, _countof(canal.nom));
canal.canal_no = (WORD)pNode->getInt(L"Canal");
@@ -527,7 +526,6 @@
delete pNode;
}
-
return 0;
}
@@ -695,7 +693,7 @@
save_config_int(ini_volume, (volumeCourant + 10000) / 100);
}
-DWORD load_config_str(LPCWSTR lpKeyName, LPWSTR lpValue, size_t bufSize, LPCWSTR lpDefault=L"")
+DWORD load_config_str(LPCWSTR lpKeyName, LPWSTR lpValue, DWORD bufSize, LPCWSTR lpDefault=L"")
{
return GetPrivateProfileString(ini_config, lpKeyName, lpDefault, lpValue, bufSize, confPathName);
}
@@ -733,7 +731,7 @@
}
}
-DWORD load_config_path(LPCWSTR lpKeyName, LPWSTR lpValue, size_t bufSize, int nDefaultFolder)
+DWORD load_config_path(LPCWSTR lpKeyName, LPWSTR lpValue, DWORD bufSize, int nDefaultFolder)
{
wchar_t default_dir[MAX_PATH];
@@ -764,7 +762,7 @@
load_config_str(ini_tuner, nom_tuner, _countof(nom_tuner));
// Vérifie si on a une réponse
if(wcscmp(nom_tuner, L"") == 0)
- // Comme fichier config.ini n'existe pas non plus, restauration du chemin vers config.ini
+ // Comme fichier config.ini n'existe pas non plus, restauration du chemin vers %AppData%
wcscpy_s(confPathName, _countof(confPathName), chemin_config);
else
// la config du tuner a été trouvée dans le répertoire de PTVM
Modifié: trunk/internet.cpp
===================================================================
--- trunk/internet.cpp 2008-10-26 13:36:37 UTC (rev 132)
+++ trunk/internet.cpp 2008-10-26 19:43:31 UTC (rev 133)
@@ -206,4 +206,4 @@
free(_contenu);
return lu;
-}
\ Pas de fin de ligne à la fin du fichier
+}
Modifié: trunk/main.cpp
===================================================================
--- trunk/main.cpp 2008-10-26 13:36:37 UTC (rev 132)
+++ trunk/main.cpp 2008-10-26 19:43:31 UTC (rev 133)
@@ -43,6 +43,7 @@
#include "xml.h"
#include "internet.h"
+
#ifdef USE_LOGITECH_LCD
#include "LCD.h"
#endif // #ifdef USE_LOGITECH_LCD
@@ -111,7 +112,6 @@
bool use_msn = false;
bool on_top = false;
bool use_ac3 = false;
-bool cmd_minimize = false; // TRUE si "-minimize" en option ligne de commande
bool suspend_minimized = false;
bool minimize_system_tray = false;
bool allow_stream_record = false;
@@ -131,8 +131,8 @@
wchar_t pouchindir_conf[MAX_PATH];
#ifdef USE_LOGITECH_LCD
-// LCD pour ceux qui en possède un
-CLcd lcd;
+ // LCD pour ceux qui en possède un
+ CLcd lcd;
#endif // #ifdef USE_LOGITECH_LCD
// Flag mis à TRUE si on est en mode plein écran,
@@ -510,9 +510,9 @@
static const Langue Tab_Lang[] =
{
{"fra", "Français"},
- {"fre", "Français"},
+ {"fre", "Français"},
{"eng", "Anglais"},
- {"ang", "Anglais"},
+ {"ang", "Anglais"},
{"deu", "Allemand"},
{"spa", "Espagnol"},
{"ita", "Italien"},
@@ -820,10 +820,8 @@
ex_style |= WS_EX_APPWINDOW;
if (ex_style != ex_style_save) {
- //ShowWindow(hMainWnd, SW_HIDE); // sert plus a rien ?
SetWindowLongPtr(hMainWnd, GWL_EXSTYLE, ex_style);
niData.update_state();
- //ShowWindow(hMainWnd, SW_SHOW);
}
}
@@ -2310,10 +2308,12 @@
switch (wParam) {
case VK_UP:
+ case VK_NEXT:
chaine_avance(-1);
break;
case VK_DOWN:
+ case VK_PRIOR:
chaine_avance(1);
break;
@@ -2493,7 +2493,7 @@
break;
}
- return lRet;
+ return lRet;
}
static void verifie_repertoire_captures(LPWSTR dir, size_t dir_size, int csidl_default, LPCSTR dirUsage)
@@ -2583,11 +2583,91 @@
WNDCLASS wndclass;
HWND hWnd;
- cmd_minimize = strcmp(lpCmdLine, "-minimize")==0;
+ struct sCmdOption {
+ char * nom;
+ bool actif;
+ int longueur;
+ sCmdOption(void) : nom(0), actif(false), longueur(0) {}
+ sCmdOption(char * a) : nom(a), actif(false), longueur(strlen(a)) {}
+ };
+
+ enum eCmdOptionNombre {
+ cmd_minimize = 0,
+ cmd_fs,
+ cmd_max,
+ cmd_noborder,
+ cmd_normal,
+ cmd_recps,
+ cmd_rects
+ };
+
+ sCmdOption cmdOptions[7];
+ cmdOptions[cmd_minimize] = sCmdOption("-minimize");
+ cmdOptions[cmd_fs] = sCmdOption("-fs");
+ cmdOptions[cmd_max] = sCmdOption("-maxi");
+ cmdOptions[cmd_noborder] = sCmdOption("-noborders");
+ cmdOptions[cmd_normal] = sCmdOption("-normal");
+ cmdOptions[cmd_recps] = sCmdOption("-recps");
+ cmdOptions[cmd_rects] = sCmdOption("-rects");
+
+ // N° de la chaine à regarder en option ligne de commande "-chXX"
+ int cmd_channel = -1;
+
+ //Lecture de la ligne de commandes
+ {
+ int nLongCmd = strlen(lpCmdLine);
+ for(int iCmd=0;iCmd Création
-
- RcdataResource canaux;
- if (ExtraitRcdataResource(MAKEINTRESOURCE(IDR_CANAUX), &canaux)) {
- // Tout s'est bien passé: on peut utiliser les canaux.ini
- if (_wfopen_s(&fop, fileName, L"w")) {
- myprintf(L"Erreur écriture\n");
- } else {
- fprintf_s(fop, (LPCSTR)canaux.contenu);
- fclose(fop);
- }
- delete [] canaux.contenu;
- }
- } else
- fclose(fop);
- }
-
// on lit la config maintenant, besoin des coords de la fenetre
load_config();
@@ -2654,13 +2709,82 @@
startConsoleWin(true);
#endif // #if USE_CONSOLE==1
#if USE_CONSOLE
+ // Affiche divers renseignements pour le debogguage
myprintf(L"Compile le : %S %S\n", __DATE__, __TIME__);
myprintf(L"\tVista build: %d\n", VISTA + 0);
+
+ myprintf(L"Tuner : %s\nRécepteur : %s\nMPEG2 : %s\nAudio : %s\nAC3 : %s\nVille : %s\n",
+ nom_tuner,
+ nom_receiver,
+ filtreMPEG2,
+ filtreAudio,
+ filtreAc3,
+ nomVille);
+ {
+ wchar_t *options = NULL;
+ int options_longueur = MultiByteToWideChar(CP_ACP, 0, lpCmdLine, -1, NULL, 0);
+ options = new wchar_t[options_longueur];
+ MultiByteToWideChar(CP_ACP, 0, lpCmdLine, -1, options, options_longueur);
+ myprintf(L"Ligne de commande : \"%s\"\n", options);
+ delete options;
+ }
#endif // #if USE_CONSOLE
- CoInitialize(NULL);
- //CoInitializeEx(NULL,COINIT_MULTITHREADED);
+ {
+ // Extrait le fichier canaux.ini des resources
+ wchar_t fileName[MAX_PATH];
+ wcscpy_s(fileName, _countof(fileName), pouchindir_prog);
+ wcscat_s(fileName, _countof(fileName), scan_ini);
+ FILE * fop;
+ if (_wfopen_s(&fop, fileName, L"r") ) {
+ // fichier canaux.ini inexistant -> Création
+
+ RcdataResource canaux;
+ if (ExtraitRcdataResource(MAKEINTRESOURCE(IDR_CANAUX), &canaux)) {
+ // Tout s'est bien passé: on peut utiliser les canaux.ini
+ if (_wfopen_s(&fop, fileName, L"w")) {
+ myprintf(L"Fichier canaux.ini => Erreur écriture\n");
+ } else {
+ myprintf(L"Fichier canaux.ini => Création\n");
+ fprintf_s(fop, (LPCSTR)canaux.contenu);
+ fclose(fop);
+ }
+ delete [] canaux.contenu;
+ }
+ } else
+ fclose(fop);
+ }
+
+ // Récupère la version de windows
+ // et initialise la variable indiquant si on tourne sous Vista
+ ZeroMemory(&windows_version, sizeof(OSVERSIONINFOEX));
+ windows_version.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXW);
+ if (GetVersionEx((OSVERSIONINFO *)&windows_version)) {
+ if (windows_version.dwMajorVersion >= 6) {
+ is_vista = true;
+ myprintf(L"Fonctionne sous Vista ou 2008 Serveur ou plus récent\t");
+ } else {
+ myprintf(L"Fonctionne sous 2000 ou XP\t");
+ }
+ } else {
+ myprintf(L"Erreur lors de la récupération de la version de Windows\t");
+ }
+ myprintf(
+#ifdef _WIN64
+ L"x64"
+#else
+ L"Win32"
+#endif
+ L"\n##########\n\n"
+ );
+
+ HRESULT hr = CoInitializeEx(NULL,COINIT_MULTITHREADED);
+ if (FAILED(hr)) {
+ erreur(L"Impossible d'initialiser la librairie COM.");
+ return hr;
+ }
+
hWnd = CreateWindowEx(0,
szAppName,
L"Pouchin TV Mod",
@@ -2703,27 +2827,6 @@
// éventuellement débutant immédiatement si intervalle en cours :
set_timer_record();
- // Récupère la version de windows
- // et initialise la variable indiquant si on tourne sous Vista
- ZeroMemory(&windows_version, sizeof(OSVERSIONINFOEX));
- windows_version.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXW);
- if (GetVersionEx((OSVERSIONINFO *)&windows_version)) {
- if (windows_version.dwMajorVersion >= 6) {
- is_vista = true;
- myprintf(L"Fonctionne sous Vista ou 2008 Serveur ou plus récent");
- } else {
- myprintf(L"Fonctionne sous 2000 ou XP");
- }
- } else {
- myprintf(L"Erreur lors de la récupération de la version de Windows\n");
- }
-#if VISTA
- is_vista = true;
- myprintf(L"\tVista forcé\n");
-#else // #if VISTA
- myprintf(L"\n");
-#endif // #if VISTA
-
// Rétablissement de la priorité de traitement sauvée dans la configuration :
set_priority(configPriority);
@@ -2731,17 +2834,25 @@
if (Canaux.size()==0) {
// Pas question d'utiliser un état de fenêtre sauvegardé dans la config
// ou de tourner en mode minimisé si aucune chaîne n'a encore été détectée
- cmd_minimize = false;
+ cmdOptions[cmd_minimize].actif = false;
configState = etf_normal;
- } else if (cmd_minimize) {
+ } else if (cmdOptions[cmd_minimize].actif) {
configState = etf_minimized;
+ }else if (cmdOptions[cmd_fs].actif){
+ configState = etf_fullscreen;
+ }else if (cmdOptions[cmd_max].actif){
+ configState = etf_maximized;
+ }else if (cmdOptions[cmd_noborder].actif){
+ configState = etf_noborders;
+ }else if (cmdOptions[cmd_normal].actif) {
+ configState = etf_normal;
} else if (configState == etf_minimized) {
// Ignorer la sauvegarde de l'état minimisé (vérifier si c'est adéquat)
configState = etf_normal;
}
// show and update main window
- if (cmd_minimize) {
+ if (cmdOptions[cmd_minimize].actif) {
ShowWindow(hWnd, SW_MINIMIZE);
UpdateWindow(hWnd);
if (minimize_system_tray)
@@ -2775,7 +2886,7 @@
} while (!config_ok);
// On a lancé avec le paramètre demandant de masquer la fenêtre
- if (cmd_minimize) {
+ if (cmdOptions[cmd_minimize].actif) {
myprintf(L"minimize\n");
if(suspend_minimized) {
debranche();
@@ -2802,7 +2913,25 @@
change_frequence(freq_courante);
}
}
+ if ((cmd_channel > 0) && (cmd_channel <= (int)Canaux.size())){
+ // Vérifie que la chaine passée en paramètre est connue
+ int temp = trouve_chaine_par_no((WORD)cmd_channel);
+ if (temp != -1)
+ zappe_index(temp);
+ }
+ if (cmdOptions[cmd_recps].actif) {
+ if (start_record_ts(ixChaineCourante)>=0){
+ update_record_menus(hMainWnd);
+ }
+ }
+
+ if (cmdOptions[cmd_rects].actif) {
+ if (start_record_ps(ixChaineCourante,ixSonCourant)>=0){
+ update_record_menus(hMainWnd);
+ }
+ }
+
hMainMenu = GetMenu(hWnd);
/**
Modifié: trunk/main.h
===================================================================
--- trunk/main.h 2008-10-26 13:36:37 UTC (rev 132)
+++ trunk/main.h 2008-10-26 19:43:31 UTC (rev 133)
@@ -77,16 +77,16 @@
#endif // #if LOG_DSHOW
// Liste des codes de timers définis :
-#define TIMER_VIDEO_MOVE 120
-#define TIMER_QUIT 121
-#define TIMER_SHUTDOWN 122
-#define TIMER_NUMBER 123
-#define TIMER_BORDER 124
-#define TIMER_OSD 125
-#define TIMER_CURSOR 126
+#define TIMER_VIDEO_MOVE 120
+#define TIMER_QUIT 121
+#define TIMER_SHUTDOWN 122
+#define TIMER_NUMBER 123
+#define TIMER_BORDER 124
+#define TIMER_OSD 125
+#define TIMER_CURSOR 126
#define TIMER_DELAYED_RECORD 127
-#define TIMER_DELAYED_STOP 128
-#define TIMER_UPDATE 129
+#define TIMER_DELAYED_STOP 128
+#define TIMER_UPDATE 129
// Liste des messages locaux à l'application :
#define WM_APP_TRAYICON_MSG (WM_APP+0)
Modifié: trunk/network.cpp
===================================================================
--- trunk/network.cpp 2008-10-26 13:36:37 UTC (rev 132)
+++ trunk/network.cpp 2008-10-26 19:43:31 UTC (rev 133)
@@ -24,7 +24,7 @@
#include "base.h"
CPinBidon::CPinBidon(HRESULT *phr, CSource *pFilter) :
- CSourceStream(L"pin bidon", phr, pFilter, L"Pipin")
+ CSourceStream(L"Pin de sortie d'antenne", phr, pFilter, L"Antenna out")
{
myprintf(L"pin construit\n");
}
Modifié: trunk/recprog.cpp
===================================================================
--- trunk/recprog.cpp 2008-10-26 13:36:37 UTC (rev 132)
+++ trunk/recprog.cpp 2008-10-26 19:43:31 UTC (rev 133)
@@ -998,7 +998,7 @@
static void update_edit_state(HWND hDlg, int selection)
{
- NomProg nom;
+ NomProg nom;
bool edit = selection>=0 && Programmes[selection].etat!=epr_encours;
EnableWindow(GetDlgItem(hDlg, IDC_MODIFY), edit);
@@ -1717,7 +1717,7 @@
frequence_courante = Canaux[ixChaine].frequence;
}
- int nbProgrammes = (int)Programmes.size();
+ int nbProgrammes = (int)Programmes.size();
// Passer en revue les programmations définies afin de démarrer TOUS les enregistrements qui
// devraient être en cours et qui peuvent être démarrés.
Modifié: trunk/recprog.h
===================================================================
--- trunk/recprog.h 2008-10-26 13:36:37 UTC (rev 132)
+++ trunk/recprog.h 2008-10-26 19:43:31 UTC (rev 133)
@@ -37,11 +37,11 @@
};
enum ApresEnregistrement {
- apr_rien, // 0
+ apr_null = -1, // utilisé dans les enregistrements en cours, pour indiquer
+ // qu'aucun horaire de fin n'est associé à un enregistrement
+ apr_rien = 0, // 0
apr_quitter, // 1
apr_eteindrePC, // 2
- apr_null = -1 // utilisé dans les enregistrements en cours, pour indiquer
- // qu'aucun horaire de fin n'est associé à un enregistrement
};
enum AudioMode {
@@ -217,4 +217,4 @@
/**
* Remplissage d'une combo-box d'items audio
**/
-void remplit_liste_audio(HWND hCtl);
\ Pas de fin de ligne à la fin du fichier
+void remplit_liste_audio(HWND hCtl);
Modifié: trunk/res.rc
===================================================================
--- trunk/res.rc 2008-10-26 13:36:37 UTC (rev 132)
+++ trunk/res.rc 2008-10-26 19:43:31 UTC (rev 133)
@@ -171,13 +171,17 @@
CONTROL "Suspendre si minimisé",IDC_SUSPEND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,20,262,10
CONTROL "Minimiser dans la zone de notification",IDC_SYSTEM_TRAY,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,37,262,10
- GROUPBOX "Audio",IDC_STATIC,7,69,276,30
- CONTROL "Utiliser l'AC3 par défaut",IDC_AC3_DEF,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,81,262,10
- GROUPBOX "Avancé",IDC_STATIC,7,111,276,30
+ GROUPBOX "Audio",IDC_STATIC,7,57,276,27
+ CONTROL "Utiliser l'AC3 par défaut",IDC_AC3_DEF,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,69,262,10
+ GROUPBOX "Avancé",IDC_STATIC,7,85,276,24
CONTROL "Permettre l'enregistrement intégral du multiplex courant",IDC_ALLOW_STREAM_RECORD,
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,125,262,10
- GROUPBOX "Divers",IDC_STATIC,7,153,276,30
- CONTROL "Afficher le nom de l'émission sous MSN",IDC_MSN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,166,262,10
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,95,262,10
+ GROUPBOX "Divers",IDC_STATIC,7,178,276,29
+ CONTROL "Afficher le nom de l'émission sous MSN",IDC_MSN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,190,262,10
+ GROUPBOX "Nom des enregistrements",IDC_STATIC,7,110,276,67
+ EDITTEXT IDC_NOM_REC,14,121,261,12,ES_AUTOHSCROLL
+ LTEXT "%c = chaine\n%e = nom de l'enregistrement",IDC_STATIC,14,135,262,18
+ LTEXT "%a = année\t\t%m = mois\t\t%j = jour\n%h = heure\t\t%M = minute\t\t%s = secondes",IDC_STATIC,14,158,262,17
END
IDD_FOLDERS DIALOGEX 0, 0, 290, 214
@@ -503,8 +507,6 @@
"S", IDM_DELAYED_STOP, VIRTKEY, NOINVERT
"X", IDM_SCREENSHOT, VIRTKEY, CONTROL, NOINVERT
VK_RETURN, IDM_STOP_RECORD, VIRTKEY, CONTROL, NOINVERT
-// VK_ADD, IDM_VOL_AUG, VIRTKEY, NOINVERT
-// VK_SUBTRACT, IDM_VOL_DIM, VIRTKEY, NOINVERT
"+", IDM_VOL_AUG, ASCII, NOINVERT
"-", IDM_VOL_DIM, ASCII, NOINVERT
"Z", IDM_ZOOM, VIRTKEY, SHIFT, NOINVERT
@@ -514,6 +516,13 @@
"D", IDM_DEFAULT_ZOOM, VIRTKEY, NOINVERT
VK_F1, IDM_ABOUT, VIRTKEY, CONTROL, NOINVERT
"I", IDM_SHOW_PROGRAMME, VIRTKEY, NOINVERT
+ // pour le support des télcos pinnacle
+ VK_OEM_COMMA, IDM_MUTE, VIRTKEY, NOINVERT
+ VK_ESCAPE, IDM_EPG, VIRTKEY, NOINVERT
+ VK_PRIOR, IDM_VOL_AUG, VIRTKEY, CONTROL, NOINVERT
+ VK_NEXT, IDM_VOL_DIM, VIRTKEY, CONTROL, NOINVERT
+ "F", IDM_FULLSCREEN, VIRTKEY, ALT, NOINVERT
+ "C", IDM_DELAYED_RECORD, VIRTKEY, NOINVERT
END
Modifié: trunk/resource.h
===================================================================
--- trunk/resource.h 2008-10-26 13:36:37 UTC (rev 132)
+++ trunk/resource.h 2008-10-26 19:43:31 UTC (rev 133)
@@ -42,6 +42,7 @@
#define IDC_SIGNAL_LOCK 1016
#define IDC_SIGNAL_QUALITY 1017
#define IDC_SIGNAL_STRENGTH 1018
+#define IDC_NOM_REC 1019
#define IDC_MESSAGE 1020
#define IDC_VERSION 1021
#define IDC_ABOUT_ICON 1022
@@ -161,12 +162,17 @@
#define IDM_UPDATE 40067
#define IDM_SHOW_PROGRAMME 40068
+#define IDM_CHAN_NUMERO 40069
+#define IDM_CHAN_NOM 40070
+#define IDM_CHAN_RESTORNUM 40071
+#define IDM_CHAN_RESTORNOM 40072
+
// Next default values for new objects
-//
+//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 133
-#define _APS_NEXT_COMMAND_VALUE 40069
+#define _APS_NEXT_COMMAND_VALUE 40073
#define _APS_NEXT_CONTROL_VALUE 1117
#define _APS_NEXT_SYMED_VALUE 121
#endif
Modifié: trunk/search.cpp
===================================================================
--- trunk/search.cpp 2008-10-26 13:36:37 UTC (rev 132)
+++ trunk/search.cpp 2008-10-26 19:43:31 UTC (rev 133)
@@ -47,7 +47,7 @@
wcscpy_s(str, _countof(str), var.bstrVal);
str[_countof(str)-1] = 0; // précaution
- int len = wcslen(str);
+ size_t len = wcslen(str);
while (len>0 && str[--len]<=' ')
str[len] = 0;
@@ -55,14 +55,19 @@
str[0] = 0;
}
+/**
+ * Recherche les filtres valides :
+ * - MPEG2
+ * - AC3
+ **/
void search_filters(GUID type, GUID subtype, HWND hItm)
{
IFilterMapper2 * pMapper;
HRESULT hr = CoCreateInstance(CLSID_FilterMapper2,
NULL, CLSCTX_INPROC, IID_IFilterMapper2, (void **)&pMapper);
- if (FAILED(hr))
- {
+ if (FAILED(hr)) {
+ myprintf(L"search_filters, 1, hr=0x%08x\n", hr);
return;
}
@@ -90,8 +95,8 @@
NULL); // Output pin category.
- if (FAILED(hr))
- {
+ if (FAILED(hr)) {
+ myprintf(L"search_filters, 2, hr=0x%08x\n", hr);
pMapper->Release();
return;
}
@@ -99,13 +104,11 @@
// Enumerate the monikers.
IMoniker *pMoniker;
ULONG cFetched;
- while (pEnum->Next(1, &pMoniker, &cFetched) == S_OK)
- {
+ while (pEnum->Next(1, &pMoniker, &cFetched) == S_OK) {
IPropertyBag * pPropBag;
hr = pMoniker->BindToStorage(0, 0, IID_IPropertyBag, (void **)&pPropBag);
- if (SUCCEEDED(hr))
- {
+ if (SUCCEEDED(hr)) {
// To retrieve the friendly name of the filter, do the following:
VARIANT varName;
VariantInit(&varName);
@@ -131,12 +134,16 @@
IBaseFilter * get_filter(GUID type, GUID subtype, wchar_t * nom)
{
+ myprintf(L"get_filter: type={%08x-%04x-%04x-%012x}\n", type.Data1, type.Data2, type.Data3, type.Data4);
+ myprintf(L"\tsubtype={%08x-%04x-%04x-%012x}\n", subtype.Data1, subtype.Data2, subtype.Data3, subtype.Data4);
+ myprintf(L"\tnom=%s\n", nom);
+
IFilterMapper2 * pMapper;
HRESULT hr = CoCreateInstance(CLSID_FilterMapper2, NULL, CLSCTX_INPROC,
IID_IFilterMapper2, (void **)&pMapper);
- if (FAILED(hr))
- {
+ if (FAILED(hr)) {
+ myprintf(L"get_filter, 1, hr=0x%08x\n", hr);
return NULL;
}
@@ -163,8 +170,8 @@
NULL, // Output medium.
NULL); // Output pin category.
- if (FAILED(hr))
- {
+ if (FAILED(hr)) {
+ myprintf(L"get_filter, 2, hr=0x%08x\n", hr);
pMapper->Release();
return NULL;
}
@@ -174,13 +181,11 @@
ULONG cFetched;
IBaseFilter *pFilter = NULL;
- while (pFilter == NULL && pEnum->Next(1, &pMoniker, &cFetched) == S_OK)
- {
+ while (pFilter == NULL && pEnum->Next(1, &pMoniker, &cFetched) == S_OK) {
IPropertyBag * pPropBag;
hr = pMoniker->BindToStorage(0, 0, IID_IPropertyBag, (void **)&pPropBag);
- if (SUCCEEDED(hr))
- {
+ if (SUCCEEDED(hr)) {
// To retrieve the friendly name of the filter, do the following:
VARIANT varName;
VariantInit(&varName);
@@ -190,9 +195,7 @@
VarStr_helper vstr(varName);
if (wcscmp(vstr(), nom)==0) {
-
hr = pMoniker->BindToObject(NULL, NULL, IID_IBaseFilter, (void**)&pFilter);
-
}
}
@@ -216,8 +219,10 @@
IPin * curpin = NULL;
hr = pFilter->EnumPins(&pEnumPins);
- if (FAILED(hr))
+ if (FAILED(hr)) {
+ myprintf(L"cherche_pin, 1, hr=0x%08x\n", hr);
return hr;
+ }
while (pEnumPins->Next(1, &curpin, NULL)==S_OK ) {
@@ -254,8 +259,7 @@
{
int res = 0;
- if (pFilter == NULL)
- {
+ if (pFilter == NULL) {
return res;
}
@@ -275,10 +279,8 @@
AM_MEDIA_TYPE * am;
- while(pEnumMedia->Next(1, &am, NULL) == S_OK && res == 0)
- {
- if (am->majortype == MEDIATYPE_Stream)
- {
+ while(pEnumMedia->Next(1, &am, NULL) == S_OK && res == 0) {
+ if (am->majortype == MEDIATYPE_Stream) {
if (am->subtype == KSDATAFORMAT_TYPE_MPEG2_TRANSPORT) {
res = 1;
@@ -305,7 +307,7 @@
HRESULT hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER,
IID_ICreateDevEnum, (void **)&pDevEnum);
if (FAILED(hr)) {
- myprintf(L"ICreateDevEnum\n");
+ myprintf(L"remplit_tuners, ICreateDevEnum : hr=0x%08x\n", hr);
return hr;
}
@@ -313,17 +315,17 @@
hr = pDevEnum->CreateClassEnumerator(guid, &pEnumMoniker, 0);
if (FAILED(hr) || pEnumMoniker == NULL) {
- myprintf(L"erreur création Enum Moniker\n");
+ myprintf(L"remplit_tuners, erreur création Enum Moniker : hr=0x%08x\n", hr);
pDevEnum->Release();
return hr;
}
IMoniker *pMoniker;
- while (pEnumMoniker->Next(1, &pMoniker, NULL) == S_OK)
- {
+ while (pEnumMoniker->Next(1, &pMoniker, NULL) == S_OK) {
IBaseFilter *pFilter;
- if (SUCCEEDED(pMoniker->BindToObject(0, 0, IID_IBaseFilter, (void**)&pFilter))) {
+ HRESULT hr = pMoniker->BindToObject(0, 0, IID_IBaseFilter, (void**)&pFilter);
+ if (SUCCEEDED(hr)) {
if (filtre_compat(pFilter)) {
IPropertyBag * pPropBag;
@@ -332,6 +334,7 @@
VARIANT varName;
VariantInit(&varName);
if (SUCCEEDED(pPropBag->Read(L"FriendlyName", &varName, 0))) {
+ myprintf(L"remplit_tuner, Tuner : %s\n", varName.bstrVal);
SendMessage(hItm, CB_ADDSTRING, 0, (LPARAM)varName.bstrVal);
}
VariantClear(&varName);
@@ -354,12 +357,13 @@
// renvoie le filtre à partir du nom
IBaseFilter * get_tuner(GUID guid, wchar_t * nom)
{
+ myprintf(L"get_tuner: guid={%08x-%04x-%04x-%012x}, nom=%s\n", guid.Data1, guid.Data2, guid.Data3, guid.Data4, nom);
// Create the System Device Enumerator.
ICreateDevEnum * pDevEnum;
HRESULT hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER,
IID_ICreateDevEnum, (void **)&pDevEnum);
if (FAILED(hr)) {
- myprintf(L"ICreateDevEnum\n");
+ myprintf(L"get_tuner, ICreateDevEnum : hr=0x%08x\n", hr);
return NULL;
}
@@ -367,7 +371,7 @@
hr = pDevEnum->CreateClassEnumerator(guid, &pEnumMoniker, 0);
if (FAILED(hr) || pEnumMoniker == NULL) {
- myprintf(L"erreur création Enum Moniker\n");
+ myprintf(L"get_tuner, erreur création Enum Moniker : hr=0x%08x\n", hr);
pDevEnum->Release();
return NULL;
}
@@ -375,22 +379,19 @@
IMoniker *pMoniker;
IBaseFilter * pFilter = NULL;
- while (pEnumMoniker->Next(1, &pMoniker, NULL) == S_OK && pFilter == NULL)
- {
+ while (pEnumMoniker->Next(1, &pMoniker, NULL) == S_OK && pFilter == NULL) {
IPropertyBag * pPropBag;
- if (SUCCEEDED(pMoniker->BindToStorage(0, 0, IID_IPropertyBag, (void **)&pPropBag)))
- {
+ if (SUCCEEDED(pMoniker->BindToStorage(0, 0, IID_IPropertyBag, (void **)&pPropBag))) {
// To retrieve the friendly name of the filter, do the following:
VARIANT varName;
VariantInit(&varName);
if (SUCCEEDED(pPropBag->Read(L"FriendlyName", &varName, 0))) {
VarStr_helper vstr(varName);
-
+ myprintf(L"get_tuner, Tuner : %s\n", varName.bstrVal);
if (wcscmp(vstr(), nom)==0) {
hr = pMoniker->BindToObject(NULL, NULL, IID_IBaseFilter, (void**)&pFilter);
-
}
}
Modifié: trunk/settings.cpp
===================================================================
--- trunk/settings.cpp 2008-10-26 13:36:37 UTC (rev 132)
+++ trunk/settings.cpp 2008-10-26 19:43:31 UTC (rev 133)
@@ -56,7 +56,7 @@
// Assistance au retour de valeur après notification dans une feuille de propriétés :
BOOL psn_result(HWND hDlg, LONG res)
{
- SetWindowLongPtr(hDlg, DWL_MSGRESULT, res);
+ SetWindowLongPtr(hDlg, DWLP_MSGRESULT, res);
return TRUE;
}
@@ -82,10 +82,17 @@
{
wchar_t temp[256];
- SendMessage(hItm, CB_GETLBTEXT,
+ // Récupère l'index de l'élément sélectionné
+ LRESULT lRet;
+
+ lRet = SendMessage(hItm, CB_GETLBTEXT,
SendMessage(hItm, CB_GETCURSEL, 0, 0),
(LPARAM)temp);
+ if(lRet == CB_ERR)
+ // La liste est vide :(
+ return false;
+
if (wcscmp(nom, temp)==0)
return false; // false = Aucun changement
wcscpy_s(nom, size, temp);
@@ -97,6 +104,7 @@
bool changed = false;
BOOL valid = false;
+ // Vérifié si des paramètres ont été changés
changed |= extrait_combo(GetDlgItem(hDlg, IDC_COMBO_TUNER), nom_tuner, _countof(nom_tuner));
changed |= extrait_combo(GetDlgItem(hDlg, IDC_COMBO_RECEIVER), nom_receiver, _countof(nom_receiver));
changed |= extrait_combo(GetDlgItem(hDlg, IDC_COMBO_MPEG2), filtreMPEG2, _countof(filtreMPEG2));
@@ -108,10 +116,22 @@
if (valid)
offset_tuner = res;
- myprintf(L"Video : %s\nAudio : %s\nAc3 : %s\n", filtreMPEG2, filtreAudio, filtreAc3);
+ myprintf(L"Tuner: %s\nReceiver: %s\nVideo: %s\nAudio: %s\nAc3: %s\nOffset: %i\n",
+ nom_tuner, nom_receiver, filtreMPEG2, filtreAudio, filtreAc3, offset_tuner);
return changed;
}
+// Vérifie si le combo n'a qu'un seul élément. Le sélectionne si oui
+static void selectionne_si_solo(HWND hItem)
+{
+ // Récupère le nombre d'éléments dans le combo
+ if (SendMessage(hItem, CB_GETCOUNT, 0, 0) == 1) {
+ // Un seul élément dans le combo. Le sélectionne
+ LRESULT lResult = SendMessage(hItem, CB_SETCURSEL, 0, 0);
+ myprintf(L"selectionne_si_solo: lResult = 0x%08x\n", lResult);
+ }
+}
+
static INT_PTR CALLBACK DriversDialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {
switch (uMsg) {
@@ -122,19 +142,30 @@
ShowWindow(GetDlgItem(hDlg, IDCANCEL), SW_HIDE);
ShowWindow(GetDlgItem(hDlg, IDOK), SW_HIDE);
}
- remplit_combo_tuner(GetDlgItem(hDlg, IDC_COMBO_TUNER),
- KSCATEGORY_BDA_NETWORK_TUNER, nom_tuner);
- remplit_combo_tuner(GetDlgItem(hDlg, IDC_COMBO_RECEIVER),
- KSCATEGORY_BDA_RECEIVER_COMPONENT, nom_receiver);
- remplit_combo_filtre(GetDlgItem(hDlg, IDC_COMBO_MPEG2),
- MEDIATYPE_Video, MEDIASUBTYPE_MPEG2_VIDEO, filtreMPEG2);
- remplit_combo_filtre(GetDlgItem(hDlg, IDC_COMBO_AUDIO),
- MEDIATYPE_Audio, MEDIASUBTYPE_MPEG2_AUDIO, filtreAudio);
- remplit_combo_filtre(GetDlgItem(hDlg, IDC_COMBO_AC3),
- MEDIATYPE_Audio, MEDIASUBTYPE_DOLBY_AC3, filtreAc3);
- SetDlgItemInt(hDlg, IDC_TUNER_OFFSET, (UINT)offset_tuner, TRUE);
- SendDlgItemMessage(hDlg, IDC_TUNER_OFFSET_UPDOWN, UDM_SETRANGE, 0,
- MAKELPARAM((short)999, (short)-999));
+ {
+ HWND hTuner = GetDlgItem(hDlg, IDC_COMBO_TUNER);
+ HWND hReceiver = GetDlgItem(hDlg, IDC_COMBO_RECEIVER);
+ HWND hMpeg2 = GetDlgItem(hDlg, IDC_COMBO_MPEG2);
+ HWND hAudio = GetDlgItem(hDlg, IDC_COMBO_AUDIO);
+ HWND hAc3 = GetDlgItem(hDlg, IDC_COMBO_AC3);
+
+ remplit_combo_tuner(hTuner, KSCATEGORY_BDA_NETWORK_TUNER, nom_tuner);
+ remplit_combo_tuner(hReceiver, KSCATEGORY_BDA_RECEIVER_COMPONENT, nom_receiver);
+ remplit_combo_filtre(hMpeg2, MEDIATYPE_Video, MEDIASUBTYPE_MPEG2_VIDEO, filtreMPEG2);
+ remplit_combo_filtre(hAudio, MEDIATYPE_Audio, MEDIASUBTYPE_MPEG2_AUDIO, filtreAudio);
+ remplit_combo_filtre(hAc3, MEDIATYPE_Audio, MEDIASUBTYPE_DOLBY_AC3, filtreAc3);
+ SetDlgItemInt(hDlg, IDC_TUNER_OFFSET, (UINT)offset_tuner, TRUE);
+ SendDlgItemMessage(hDlg, IDC_TUNER_OFFSET_UPDOWN, UDM_SETRANGE, 0,
+ MAKELPARAM((short)999, (short)-999));
+
+ // Cherche s'il n'y a qu'un élément dans la liste
+ // Le sélectionne si oui
+ selectionne_si_solo(hTuner);
+ selectionne_si_solo(hReceiver);
+ selectionne_si_solo(hMpeg2);
+ selectionne_si_solo(hAudio);
+ selectionne_si_solo(hAc3);
+ }
return TRUE;
case WM_COMMAND:
@@ -1008,6 +1039,7 @@
switch(wParam) {
case _cmd_(IDC_SCAN, BN_CLICKED): {
+ // Lance la rechercher des Chaines
static bool rechercheEncours = false;
if (!rechercheEncours) {
@@ -1024,6 +1056,7 @@
break; }
case _cmd_(IDC_RENUMBER, BN_CLICKED): {
+ // Boite de dialogue permettant de renuméroter les chaines
int res = renumber_dialog();
if (res==IDC_RENUM_SEQ || res==IDC_RENUM_REST) {
int nbItems = ListView_GetItemCount(hListItem);
@@ -1220,27 +1253,28 @@
ScreenToClient(hListItem, &lvhti.pt);
if (ListView_SubItemHitTest(hListItem, &lvhti)>=0 && lvhti.iSubItem==CHAN_COL_STATE) {
- static const struct Tab_states {
- LPCWSTR nom;
- UINT uID;
- } t_states[] = {
- {L"&Inactive", IDM_CHAN_INACTIVE},
- {L"&Active", IDM_CHAN_ACTIVE},
- {L"&Préférée", IDM_CHAN_PREFERRED}
- };
- EtatChaine etat = ItemToEtat(hListItem, lvhti.iItem);
- HMENU pop = CreatePopupMenu();
- for (i=0; i<_countof(t_states); i++) {
- const Tab_states e_stat = t_states[i];
+ // Change l'état de la chaine : Active / Inactive / Préférée
+ static const struct Tab_states {
+ LPCWSTR nom;
+ UINT uID;
+ } t_states[] = {
+ {L"&Inactive", IDM_CHAN_INACTIVE},
+ {L"&Active", IDM_CHAN_ACTIVE},
+ {L"&Préférée", IDM_CHAN_PREFERRED}
+ };
+ EtatChaine etat = ItemToEtat(hListItem, lvhti.iItem);
+ HMENU pop = CreatePopupMenu();
+ for (i=0; i<_countof(t_states); i++) {
+ const Tab_states e_stat = t_states[i];
- AppendMenu(pop, i==etat ? MF_STRING|MF_CHECKED : MF_STRING,
- e_stat.uID, e_stat.nom);
+ AppendMenu(pop, i==etat ? MF_STRING|MF_CHECKED : MF_STRING,
+ e_stat.uID, e_stat.nom);
+ }
+ iItemEdit = lvhti.iItem; // se souvenir quel item on traite
+ TrackPopupMenuEx(pop, TPM_LEFTALIGN | TPM_LEFTBUTTON, pt.x, pt.y, hDlg, NULL);
+
+ DestroyMenu(pop);
}
- iItemEdit = lvhti.iItem; // se souvenir quel item on traite
- TrackPopupMenuEx(pop, TPM_LEFTALIGN | TPM_LEFTBUTTON, pt.x, pt.y, hDlg, NULL);
-
- DestroyMenu(pop);
- }
break; }
}
return FALSE;
Modifié: trunk/xml.cpp
===================================================================
--- trunk/xml.cpp 2008-10-26 13:36:37 UTC (rev 132)
+++ trunk/xml.cpp 2008-10-26 19:43:31 UTC (rev 133)
@@ -155,6 +155,7 @@
void CXMLNode::getStr(const wchar_t * nom, char * str, size_t size)
{
wchar_t buffer[64];
+ ZeroMemory(buffer, sizeof(buffer));
getStr(nom, buffer, _countof(buffer));
WideCharToMultiByte(CP_ACP, 0, buffer, -1, str, size, NULL, NULL);