«
»
Grenier, boite 7

Grenier, boite 7

Quelques pages d’un blog de 2013/2014 sur http://windev-fr.over-blog.com, abandonné en 2020.
Merci à son auteur François-Xavier Cadeau !

Objective-C: Nom de l'opérateur téléphonique
Dans WinDev Mobile, saisir le code ci-dessous dans une procédure globale en Objective-C. Ce bout de code retourne le nom de l’opérateur téléphonique de l’iPad/iPhone.

#import <CoreTelephony/CTCarrier.h>
#import <CoreTelephony/CTTelephonyNetworkInfo.h>
//
NSString* SIMNomOperateur()
 
{
 
//Initialisation des données
 
CTTelephonyNetworkInfo *networkInfo = [[[CTTelephonyNetworkInfo alloc] init] autorelease];
 
if(networkInfo==nil)
 
return @"";
 
CTCarrier *carrier = [networkInfo subscriberCellularProvider];
 
if(carrier==nil)
 
return @"";
 
//On accède au code pays
 
NSString *mcc = [carrier mobileCountryCode];
 
if (mcc == nil)
 
return @"";
 
//On accède au nom de l'opérateur de téléphonie mobileCountryCode
 
NSString *carrierName = [carrier carrierName];
 
return carrierName;
 
}

WinDev Mobile: GéoCoding multi plate-forme
Sous iOS, la fonction WinDev Mobile géoRécupèreAdresse qui permet de récupérer des informations sur une adresse n’est pas supportée en WinDev Mobile 18 et 19.

Il existe sur le Net des Web Services, plus ou moins contraignant dans leur utilisation, qui permettent de récupérer une multitude d’informations depuis une adresse, un lieu ou même un monument sans se soucier de la plate-forme utilisé.

Exemple avec l’API Google Map API V3:

L’URL à appelée pour la Tour Eiffel – http://maps.googleapis.com/maps/api/geocode/xml?address=Tour+Eiffel&sensor=false

Données XML retournées par Google:

OK
 
point_of_interest
establishment
 
Tour Eiffel, Champ de Mars, 5 Avenue Anatole France, 75007 Paris, France
 
 
Tour Eiffel
Tour Eiffel
point_of_interest
establishment
 
 
Champ de Mars
Champ de Mars
premise
 
 
5
5
street_number
 
 
Avenue Anatole France
Av. Anatole France
route
 
 
Paris
Paris
locality
political
 
 
Paris
75
administrative_area_level_2
political
 
 
Île-de-France
IDF
administrative_area_level_1
political
 
 
France
FR
country
political
 
 
75007
75007
postal_code
 
 
 
48.8582285
2.2943877
 
APPROXIMATE
 
 
48.8568795
2.2930387
 
 
48.8595775
2.2957367

Objective-C: Lancer une appli sur IOS
Dans WinDev Mobile, saisir le code ci-dessous dans une procédure globale en Objective-C.
Ce bout de code permet de lancer une application présente sur l’iPad/iPhone.

#import <UIKit/UIKit.h>
void LanceAppliAssocieeIOS(NSString* cheminfic )
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:cheminfic]];
}

Lancer l’App Store, Facebook, iTunes, Safari, Skype : http://www.benoit-deldicque.com/blog/iphone-apps-url-schemes/

Le PersoMenu sous WinDev - WB - WM

Le PersoMenu permet de personnaliser des options du menu de WinDev, comme ouvrir un fichier spécifique, lancer des applications (NotePad, Calculatrice, …).

Dans la configuration du PersoMenu, on peut ajouter des options ou un Dossier dans lequel on classera les différentes options. Les options sont des actions à exécuter qui sont saisies en ligne de commande.

Le PersoMenu est accessible depuis l’icône « 18 » en haut à gauche de WinDev. Pour les versions antérieurs à la version 18, le PersoMenu est accessible depuis le menu principal, entre Outils et Fenêtre. Si le PersoMenu n’est pas visible, il peut être activé depuis les Outils et Options de l’environnement.

Le description d’une option du PersoMenu est composé:

  • Libellé du menu
  • Ligne de commande en DOS
  • Autres options: Exécution silencieuse, Bloquante ou non
  • Utilisation de Macro: {$NomProjet}, {$RepSelecteur}, …

Exemple 1: Copier l’objet généré dans la configuration en cours dans un répertoire temporaire

rd « C:\temp\{$NomObjetGenere} » /S /Q
xcopy « {$RepObjetGenere}\{$NomObjetGenere} » « C:\temp\{$NomObjetGenere}\ » /H  /E

On supprime les données existantes de l’objet « rd » et on copie les nouvelles données « xcopy ».

Exemple 2: Copier l’installation IOS générer par WinDev Mobile directement sur un MAC pour compilation X-Code

« C:\Mes Projets Mobile\IOS\pscp » -r -pw « {$NomExe} » UserHost@Host:/Destination

Pour faire cette copie on utilise l’utilitaire pscp.exe de transfert de fichier via une connexion SSH.

Utilisation de PSCPhttp://marc.terrier.free.fr/docputty/Chapter5.html (hébergé ici car aussi disparu d’internet)

Télécharger PSCP.exehttp://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

Objective-C: Le Wifi est-il connecté?
Dans WinDev Mobile, saisir le code ci-dessous dans une procédure globale en Objective-C.

Ce bout de code permet de savoir si l’iPad/iPhone est connecté au Wifi. Retourne un booléen (Vrai ou Faux). Ce code ne marche pas avec la 3G, mais uniquement avec le Wifi.

 #import <sys/socket.h>
#import <netinet/in.h>
#import <SystemConfiguration/SystemConfiguration.h>
 
 
 
bool WifiEstConnecte()
{
struct sockaddr_in zeroAddress;
bzero(&zeroAddress, sizeof(zeroAddress));
zeroAddress.sin_len = sizeof(zeroAddress);
zeroAddress.sin_family = AF_INET;
SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, (const struct sockaddr*)&zeroAddress);
bool bWifi = FALSE;
bool bWWAN = FALSE;
SCNetworkReachabilityFlags flags;
bool bConnectionRequired = TRUE;
if (SCNetworkReachabilityGetFlags(reachability, &flags))
{
if ((flags & kSCNetworkReachabilityFlagsReachable) == 0)
{
// Si l'hôte cible n'est pas accessible
bWifi = FALSE;
bWWAN = FALSE;
}
else
{
if ((flags & kSCNetworkReachabilityFlagsConnectionRequired) == 0)
{
// Si l'hôte cible est accessible et aucune connexion n'est nécessaire
// alors nous partons du principe que vous êtes sur le Wi-Fi
bWifi = TRUE;
}
 
if ((((flags & kSCNetworkReachabilityFlagsConnectionOnDemand ) != 0) || (flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) != 0))
{
// ... et la connexion est à la demande (ou sur le trafic) si l'application appelante utilise l'API CFSocketStream ou supérieur
if ((flags & kSCNetworkReachabilityFlagsInterventionRequired) == 0)
{
// ... et aucune intervention n'est nécessaire
bWifi = TRUE;
}
}
if ((flags & kSCNetworkReachabilityFlagsIsWWAN) == kSCNetworkReachabilityFlagsIsWWAN)
{
// ... mais les connexions WWAN sont OK si l'application appelante utilise la CFNetwork (CFSocketStream?) API
bWWAN = TRUE;
}
}
bConnectionRequired = (flags & kSCNetworkReachabilityFlagsConnectionRequired);
}
return !bConnectionRequired && bWifi;
}

IOS - WinDev Mobile : Faire patienter l'utilisateur
Dans WinDev Mobile, pour IOS, pour faire patienter l’utilisateur, il suffit de saisir les 4 lignes de codes ci-dessous.

Faire apparaître le message à l’ouverture d’une fenêtre «FEN_Produits», lors d’un chargement d’une zone répétée par exemple, par un clic sur un bouton «BTN_Ouvre»:

Clic sur BTN_Ouvre

TitreSuivant("Veuillez patienter...")
Sablier(Vrai)
Multitâche(-1)
OuvreFille(FEN_Produits)

Fin d’initialisation de FEN_Produits

Sablier(Faux)

Il existe aussi la possibilité de développer une procédure Objective-C dans WinDev Mobile pour gérer le sablier sous iPad/iPhone.

Objective-C: Ajouter un badge à une application
Dans WinDev Mobile, saisir le code ci-dessous dans une procédure globale en Objective-C. Ce bout de code permet d’afficher sur l’icône d’une application un badge rouge avec écriture blanche afin d’indiquer à l’utilisateur un nombre de notification.

void AjouteBadgeApplication(int nNumeroSemaine)
{
[UIApplication sharedApplication].applicationIconBadgeNumber = nNumeroSemaine;
}

Instruction RENVOYER: Valeurs de retour multiples
L’instruction RENVOYER permet de quitter un traitement, une procédure, une fonction, une méthode de classe ou une fenêtre en cours en renvoyant une valeur.

Une nouveauté depuis la version 19 de WinDev, il est maintenant possible de renvoyer plusieurs valeurs.

RENVOYER(, , ... )
 
RETOUR = (, )

Typage des valeurs de retour :

PROCEDURE MaProcedure() : ([, [, ... []]])