Nokioteca [Nokia] Forum: [mshell] Semplice Calendarietto - Nokioteca [Nokia] Forum

Salta al contenuto

Pagina 1 di 1
  • Non puoi iniziare una nuova discussione
  • Non puoi rispondere a questa discussione

[mshell] Semplice Calendarietto Funzione che genera un calendario

#1 L   lento 

  • Senior Member
  • PuntoPuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 637
  • Iscritto: 03 settembre 2008
  • Cellulare:E72

Inviato 12 aprile 2009 - 16:08

Salve a tutti...
Per imparare mShell non basta leggere i manuali, bisogna scrivere brevi
funzioni o programmini, anche di poco senso.

Seguendo questa prassi commetterei l'errore di programmare introducendo le solite
abitudini (buone o cattive) apprese da precedenti linguaggi e esperienze......


Riporto un programmino che permette di avere un calendario visivo e
tramite il tasto Nav. sfogliarlo e selezionare una data.
Questa è una funzione che avevo in modo Nativo nel Palm Treo e che
mi manca molto sui modelli nokia.

Lo allego sia per poter essere utile ad altri sia per chiedere se qualcuno può
aiutarmi a eliminare vecchie abitudini o migliorarlo.
Se volete stravolgerlo, usarlo in vostri programmi, fate pure come ritenete
più opportuno.

Volevo allegare il file Calend.m ma mi si nega la possibilità di farlo.
Qualcuno mi spiega come si fa. Per adesso lo riporto per esteso......
-----------------------INIZIO File Calend.m-----------------------
/* 2009-04-12 Ore 16.19
funzione di uso generico che mostra un
calendario e rende la data scelta.*/

use time, graph, ui, math

/*-===============bisestile================*/ /*0*/
function bisestile(anno)
//---rende 29 se bisestile altrimenti 28
try
time.num(anno+'-'+'02'+'-'+'29');
return 29;
catch exc by
return 28;
end;
end
/*-===============vcalend================*/
function vcalend(nomeanno,nomemese,giornimese,giorno,inizio,dfont)
// mostra a video il calendario
xi=dfont*2; yi=dfont+2; graph.clear();
if giorno>giornimese then giorno=1; end;
graph.text(xi*3,yi,nomemese+' '+nomeanno);
x=xi; y=yi+yi; limite=xi*7;
for i in ['Lu','Ma','Me','Gi','Ve','Sa','Do'] do
graph.text(x,y,i); x+=xi;
end;

x=(inizio*xi)+xi; y=yi*3;
for i=1 to giornimese do
graph.text(x,y,str(i));
if i=giorno then graph.rect(x-dfont/2.2,y-(dfont-1),xi,yi); end;
x+=xi;
if x>limite then x=xi; y+=yi; end;
end;
end
/*-===============calenda================*/ /*1*/
function calenda(annos,meses,giornos,xvi,yvi)
ui.keys(false,false); // Attivo scansione tastiera
fontr=graph.font(); // ricavo font e dimensioni
oldfo=fontr[1]; // conservo dimensioni font
dfont=math.trunc(xvi/16); // ricavo nuove dimensioni
fontr[1]=dfont; graph.font(fontr); // imposto nuove dimensioni
graph.size(xvi,yvi);
giornimesi=[0,31,28,31,30,31,30,31,31,30,31,30,31];
nomemese=['','Gennaio','Febbario','Marzo',
'Aprile','Maggio','Giugno',
'Luglio','Agosto','Settembre',
'Ottobre','Novembre','Dicembre'];
giornon=num(giornos);
mesen=num(meses);
do
finemese=giornimesi[mesen];
if mesen=2 then giornimesi[2]=bisestile(annos); end;
inizio=time.dayofweek(time.num(annos+'-'+str(mesen)+'-01'));
do
vcalend(annos,nomemese[mesen],finemese,giornon,inizio,dfont);
graph.show();
a=ui.cmd(-1);
if a=63496 then giornon++; end; //-->
if a=63495 then giornon--; end; //<--
if a=63497 then //^
mesen++; if mesen>12 then mesen=1; annos=str(num(annos)+1); end;
break;
end;
if a=63498 then //v
mesen--; if mesen<1 then mesen=12; annos=str(num(annos)-1); end;
break;
end;
// controllo validita giorno
if giornon<1 then giornon=finemese; end;
if giornon>finemese then giornon=1; end;
until a=63557; // pressione tasto centrale
until a=63557;
fontr[1]=oldfo; graph.font(fontr); // reimposto font origine
if mesen>9 then // formatto la stringa mese
meses=str(mesen);
else
meses='0'+str(mesen);
end;
if giornon>9 then // formatto la stringa giorno
giornos=str(giornon);
else
giornos='0'+str(giornon);
end;
return annos+'-'+meses+'-'+giornos;
end

/*---------------MAIN-----------------*/
data=split(date()); data=data[0]
a3oggi=split(data,'-')
//calenda(anno,mese,giorno,xvideo,yvideo)
frase=calenda(a3oggi[0],a3oggi[1],a3oggi[2],320,240)
cls()
print frase

/*0 Sfruttando l'intrappolamento degli errori
verifica se febbraio ha 28 o 29 giorni
(anno bisestile)
rende quanti giorni ha febbraio */

/*1 immettendo l'anno,mese,giorno in formato stringa e
le dimensioni dello schermo mostra a video un
calendario del mese evidenziando il giorno.
Tramite il tasto navi(freccia destra freccia sinistra)
fa scorrere l'evidenziazione del giorno.
La pressione del tasto centrale esce da calend e rende
una stringa con la data scelta es."2009-04-12"
la freccia su e giu del Navi cambia il mese e l'anno
Il cursore rimane sul giorno precedentemente impostato
o se non disponibile si pone sul giorno 1.
NOTA: Adattando il pogramma solo per un determinato
schermo e font si puo' semplificare notevolmente il
programma rendendolo molto piu leggibile e piccolo. */
--------------------FINE---------------------------------------

Se questo non rientra nello spirito del forum avvisatemi Grazie...
0

#2 L   pandipo 

  • Millennium Member
  • PuntoPuntoPuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 1159
  • Iscritto: 18 maggio 2007
  • Località:spinea VE
  • Cellulare:n79

Inviato 12 aprile 2009 - 17:20

premetto che di mshell capisco poco (: comunque rientra nello spirito eccome!
Per allegare un file o lo zippi o ci cambi estensione (es lo rinonimi in txt)!
0

#3 L   lento 

  • Senior Member
  • PuntoPuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 637
  • Iscritto: 03 settembre 2008
  • Cellulare:E72

Inviato 13 aprile 2009 - 08:27

Visualizza Messaggipandipo, il 12/04/2009 - 18:20, ha scritto:



Allego il programmino in sorgente.
Download file  Calend.txt (3,64K)
Numero di downloads: 20
Sono nelle tue stesse condizioni come conoscenza di mShell e della programmazione in genere.
Ho allegato questo sorgente convinto che è pieno di zone migliorabili, se non addirittura di errori.
Chiunque lo legga può ottenere tre cose:
1)vedere errori e possibili miglioramenti, e decidere di condividerli oppure no.
2)Scoprire un modo di calcolare o scrivere una funzione che non conosceva (i famosi Tips&Tricks).
3)Stimolare la nascita di un idea nuova.

Un miglioramento ad esempio potrebbe consistere nel gestirlo come un pop-up di dimensioni inferiori
a quelle dello schermo e posizionarlo da qualsiasi parte......

Unico "dovere" e che non si lascino circolare errori........
0

#4 L   pandipo 

  • Millennium Member
  • PuntoPuntoPuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 1159
  • Iscritto: 18 maggio 2007
  • Località:spinea VE
  • Cellulare:n79

Inviato 13 aprile 2009 - 12:20

ok vorrei provarlo ma la mia ultima versione di m-shell è la 2.12 XD e poi io non ho capito di che tasto parli ("Nav"?) che comunque non so se esista sul 6630!

Ottima filosofia (:
0

#5 L   lento 

  • Senior Member
  • PuntoPuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 637
  • Iscritto: 03 settembre 2008
  • Cellulare:E72

Inviato 13 aprile 2009 - 14:44

Visualizza Messaggipandipo, il 13/04/2009 - 13:20, ha scritto:

ok vorrei provarlo ma la mia ultima versione di m-shell è la 2.12 XD e poi io non ho capito di che tasto parli ("Nav"?) che comunque non so se esista sul 6630!


Salve 'pandipo'
Il tuo cellulare è un symbian 2rd e per quel che vedo è ancora supportato dalla ultima versione mshell 3.02.
Credo che ti convenga aggiornare la versione e provarlo ma soprattutto provare i programmi più completi scritti da altri.
Il mio è un eseguibile che ti mostra a pieno schermo un calendario tipo...
_____Aprile 2009_____
_Lu_Ma_Me_Gi_Ve_Sa_Do
_______1__2__3__4__5
_6_[7]_8__9__10_11_12
_13__14_15_16_17_18_19 (Ha! se sapessi come si spazia su queste pagine!!)
_20_21_22_23_24_25_26
_27_28_29_30

Praticamente premendo il Joystick ("Nav" così chiamato sul manuale del mio E71) rende una stringa composta da
"anno-mese-giorno" da assegnare ad una variabile per sfruttarla in un tuo programma....

i tasti freccia destra-sinistra fanno scorrere il giorno evidenziato "[7]".
i tasti alto-basso cambiano il mese e eventualmente l'anno.

(ricordati di modificare frase=calenda(a3oggi[0],a3oggi[1],a3oggi[2],320,240)
a
frase=calenda(a3oggi[0],a3oggi[1],a3oggi[2],176,208)
se la risoluzione video del tuo cell è 176x208 (o anche un valore inferiore se vuoi un calendario più piccolo)

Sinceramente non so come si comporti su cellulari con schermo differente dal mio
idem per la velocità non so se il cursore si sosta fluidamente.

Se te la senti di provarlo fammi sapere.... se nella versione mShell 2.12 ci sono le librerie indicate dalla riga:
"use time, graph, ui, math"
Dovrebbe funzionarti ugualmente (premetto che la 2.12 non la conosco)

Se posso modificartelo in un programma a te utile fammi sapere... (Sempre che ne sia capace... ;) )
0

#6 L   pandipo 

  • Millennium Member
  • PuntoPuntoPuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 1159
  • Iscritto: 18 maggio 2007
  • Località:spinea VE
  • Cellulare:n79

Inviato 13 aprile 2009 - 17:45

Ok funziona bene!
Immagine Postata

potresti implementare una funzione che esegue il programma in standby!

Molto bravo comunque, penso che l'algoritmo per la data possa essere molto utile!
0

#7 L   lento 

  • Senior Member
  • PuntoPuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 637
  • Iscritto: 03 settembre 2008
  • Cellulare:E72

Inviato 14 aprile 2009 - 14:35

Visualizza Messaggipandipo, il 13/04/2009 - 18:45, ha scritto:

potresti implementare una funzione che esegue il programma in standby!

Spiegami meglio.... Vuoi utilizzarlo come semplice calendario in background per vedere le date? o tramite il calendario
attivare un programma più complesso?.

Che so' un agendina con varie sezioni, (Spese,Fare,RicordatiDi..) attivata dalla pressione del joystick in calendarietto?
0

#8 L   pandipo 

  • Millennium Member
  • PuntoPuntoPuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 1159
  • Iscritto: 18 maggio 2007
  • Località:spinea VE
  • Cellulare:n79

Inviato 14 aprile 2009 - 14:54

sono tutte e due buone idee, la prima stuzzica parecchio ;)
0

#9 L   giuppe92 

  • Millennium Member
  • Gruppo: Developer
  • Messaggi: 1058
  • Iscritto: 20 febbraio 2007
  • Località:Spilimbergo (PN)
  • Cellulare:N70
  • Firmware:5.0638.3.0.1

Inviato 14 aprile 2009 - 15:49

In python attraverso il TopWindow si potebbe creare un calendarietto che va a stamparsi sul desktop! :D

Utilizzando il tuo algoritmo!
0

#10 L   pandipo 

  • Millennium Member
  • PuntoPuntoPuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 1159
  • Iscritto: 18 maggio 2007
  • Località:spinea VE
  • Cellulare:n79

Inviato 14 aprile 2009 - 21:39

ci avevo pensato anch'io(assegnando una combinazione di tasti ecc ecc), da questo punto di vista python ha molte più potenzialità di mshell, che non so se ha questa possibilità:blink:
0

#11 L   lento 

  • Senior Member
  • PuntoPuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 637
  • Iscritto: 03 settembre 2008
  • Cellulare:E72

Inviato 15 aprile 2009 - 19:43

Visualizza Messaggigiuppe92, il 14/04/2009 - 16:49, ha scritto:

In python attraverso il TopWindow si potebbe creare un calendarietto che va a stamparsi sul desktop! :thumbdown:
Utilizzando il tuo algoritmo!

Salve 'giuppe92' effettivamente con Python si può.....
Se te la senti di farlo sarebbe una gran cosa e in oltre rispoderesti al punto N.3)"Stimolare la nascita di un idea nuova."
uno dei tre motivi che mi ha spinto a pubblicare quelle semplici funzioni del calendarietto.

La forza del Python sono sempre state le librerie scritte in abbondanza e per qualsiasi piattaforma.
Credo che il motivo sia legato alla sua condizione di programma GPL (free).

Pensi di poterlo fare.........
0

#12 L   lento 

  • Senior Member
  • PuntoPuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 637
  • Iscritto: 03 settembre 2008
  • Cellulare:E72

Inviato 15 aprile 2009 - 19:49

Visualizza Messaggipandipo, il 14/04/2009 - 22:39, ha scritto:

ci avevo pensato anch'io(assegnando una combinazione di tasti ecc ecc), da questo punto di vista python ha molte più potenzialità di mshell, che non so se ha questa possibilità;)

Scusa 'pandipo' la mia lentezza.... ma non riesco a capire che uso ha un calendarietto pop-up.
Se devi vedere un calendario non basta premere il tasto "Agenda"?.

Porta pazienza... ma fammi capire... :thumbdown:
0

#13 L   lento 

  • Senior Member
  • PuntoPuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 637
  • Iscritto: 03 settembre 2008
  • Cellulare:E72

Inviato 27 aprile 2009 - 21:12

Vabbè! nessuno mi ha risposto? :)

Guardate questa immagine del calendarietto in mShell era questo che volevate?
Che deve fà.... era solo per vedere se si poteva?.
E' permesso dare anche risposte false e tendenziose......Tanto sta'nfondo al barile peggio de così!
Download file  calend.png (32,03K)
Numero di downloads: 4
0

#14 L   pandipo 

  • Millennium Member
  • PuntoPuntoPuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 1159
  • Iscritto: 18 maggio 2007
  • Località:spinea VE
  • Cellulare:n79

Inviato 28 aprile 2009 - 14:04

Eh si ^_^ proprio così intendevo! :lol:
0

#15 L   giuppe92 

  • Millennium Member
  • Gruppo: Developer
  • Messaggi: 1058
  • Iscritto: 20 febbraio 2007
  • Località:Spilimbergo (PN)
  • Cellulare:N70
  • Firmware:5.0638.3.0.1

Inviato 01 maggio 2009 - 13:52

:P Scusa lento ma ho seguito poco, anzi per niente, la sezione di programmazione.

Cmq è quello cheintendevo io! :thumbsup_anim:
0

#16 L   lento 

  • Senior Member
  • PuntoPuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 637
  • Iscritto: 03 settembre 2008
  • Cellulare:E72

Inviato 14 giugno 2009 - 16:40

Ora date un occhiata a quanto riportato da 'Nick_7'
qui
Per visualizzare questo link registrati o esegui il log in.

Ora potete fare con piu facilità il calendarietto in primo piano senza ricorrere al barbatrucco da mè utilizzato.!
0

#17 L   Genius66 

  • Senior Member
  • PuntoPuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 796
  • Iscritto: 24 maggio 2009
  • Località:Palermo
  • Cellulare:Nokia N73
  • Firmware:V 4.0812.4.0.1

Inviato 14 giugno 2009 - 17:57

Visualizza Messaggilento, il 27/04/2009 - 22:12, ha scritto:

Vabbè! nessuno mi ha risposto? :mumble:

Guardate questa immagine del calendarietto in mShell era questo che volevate?
Che deve fà.... era solo per vedere se si poteva?.
E' permesso dare anche risposte false e tendenziose......Tanto sta'nfondo al barile peggio de così!
Allegato calend.png

Carino, in landscape :angel:
0

#18 L   Nick_7 

  • Senior Member
  • PuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 339
  • Iscritto: 20 novembre 2008
  • Località:Luna
  • Cellulare:Omnia HD
  • Firmware:I8910XXJB1

Inviato 16 giugno 2009 - 21:47

L'ho vista solo ora questa discussione...grande "lento" darò un'occhiata anche a questo interessante script :lol:

Tanto non riuscirai a combinare nulla di meglio... :thumbs:

Messaggio modificato da Nick_7 il 16 giugno 2009 - 21:49

0

Condividi questa discussione:


Pagina 1 di 1
  • Non puoi iniziare una nuova discussione
  • Non puoi rispondere a questa discussione