minox player radionica implementacija limegreen teme

Download Minox Player Radionica Implementacija LimeGreen Teme

If you can't read please download the document

Upload: amar-tufo

Post on 14-Dec-2015

219 views

Category:

Documents


1 download

DESCRIPTION

hjdgasfjhsdgafhjdgasfjhgasdfjhgasdf

TRANSCRIPT

Minox Player RadionicaImplementacija korisnike teme na Minox PlayerIzvorni tehniki lanakPie: Amar Tufo

Saetak: U ovom radu autor pokazuje nain implementacije i programiranja korisnike teme na Minox Player-u u njegovom SDK-u koristei VB.NET programski jezik. U radu je demonstrirana implementacija Lime Green teme koristei se unaprijed kreiranim setom interfejsa Minox Player-a i njegovim uitavanjem u kod kreiranjem vlastite subrutine. Na kraju je prikazano pozivanje vlastite subrutine i testiranje novokreirane teme na Minox Player-u. U radu se izmeu ostalog pominje kreiranje vlastitih tipova podataka, varijabli i subrutina kao i nain njihove manipulacije i pristupa istih u kontekstu Minox Player-a.

Kljune rijei: Minox Player, VB.NET, Lime Green tema, Minox SDK

Autor: Amar Tufo Amar Tufo & Minox Player, 2015 Minox Player, 2012 - 2015http://www.minoxmp3player.org

O Autoru:

Amar Tufo je 22. godinji student tree godine Arheologije, Filozofskog fakulteta u Sarajevu, bloger, VB.NET Junior developer i kreator Minox Player-a. Amar je ujedno i etverogodinji korisnik Ubuntu Linux-a i open source softvare evanelist koji s vremena na vrijeme objavljuje lanke u vezi Ubuntu-a i njegove filozofije na svom sajtu. Vie o Amaru moete vidjeti na ovim dole linkovima:

Oficijelni Facebook:http://www.facebook.com/ubuntuBoy

Oficijelni Twitter:https://twitter.com/amartufo

Oficijelni LinkedIn:https://www.linkedin.com/in/amartufo

Zvanina web stranica:http://www.amartufointeractive.blogspot.com

2Uvod:

Prolo je vie od 4 pune godine kako se Minox Player razvija. U protekle 4 godine od 2011. godine kada je Minox Player nastao do 2015 objavljene su pune 4 verzije ovog male naminkane muzike aplikacije. Iako je Minox Player napisan iskljuivo za Windows 7 mnogi njegovi korisnici apeluju kako Minox Player treba zaiviti i svoje Linux izdanje. Uglavnom, ono po emu se Minox Player razlikuje od ostalih i niza drugih, funkcijama, naprednih player-a jeste odstustvo muzike biblioteke kao i programski jezik u kojem je ovaj player i nastao. Radi se o VB.NET programskom jeziku koji je izuzetno lagan za savladati ali i nairoko primjenjiv profesionalni programski jezik za izradu vrlo interaktivnih ali dosta kvalitetnih softwerskih rjeenja kao Minox Player. Glavna namjena Minox Player-a nije ekonomski profit nego se radi o intelektualnom profitu to hoe rei da je moj primarni cilj od samog poetka bio VB.NET programski jezik i njegovo uenje kroz sasvim drugaiji nain a Minox Player je taj nain odnosno krajnji rezultat kontinuiranog, 4 godine dugog rada i razvoja. Minox Player objedinjuje sve koncepte objektno orjentisanog programiranja kroz teoriju i praksu, tipove podataka VB.NET programskog jezika, manipulacije i kreiranje sopstvenih tipova podataka, manipulacije izlazom i ulazom kroz radni filter podataka ali i izrada interfejsa tako i rad sa grekama. Minox Player je bio moj najbolji nain da savladam i nauim VB.NET razvojem i radom na pravoj raunalnoj aplikaciji koja primjenjuje kako teoriju tako i praksu da bi na kraju Minox Player postao to to je postao. Da ne duim ovaj pove dug uvod treba svakako da napomenem kako Minox Player nikada nije imao razvojni dokument niti je bilo koja nova opcija pomno planirana za svoju implementaciju. Stoga u nastavku ovog rada bit e prikazan nain i metode implementacije novog interfejsa ili kako sam to ja nazvao nove teme za izgled Minox Player-a.

1. Ukratko o Minox Player-u 3

Od samog razvoja Minox Player-a mnogi su bili zbunjeni tako da sam dobijao pitanja ta je uopte Minox Player. Zato praviti aplikaciju koja svira samo vau muziku? Koja je to svrha i kakvu korist aplikacija moe donjeti svom krajnjem korisniku? Trebate imati na umu kako programiranje nije svaija sretna aa niti je to znanje koje moe svatko da ima. Ili ste talentovani za programiranje ili ste roeni programer, tree nema. No, svakom programeru je san kreirati program, aplikaciju koja radi bilo ta pa makar ona bila i ve tradicionalni Hello World program, konsolna aplikacija koja na crnom zaslonu printa tekst poruku: 'Hello World'. Jedanput kada programer stvori neto u svojoj glavi i to isto prenese u raunar, aplikacija je krajnji rezultat a nagrada za nju je ponos i zadovoljstvo jer ste ostvarili svoj cilj, ovladali ste znanjem i to znanje uspjeno iskoristili i stvorili svoju sopstvenu aplikaciju. Ista pria prati Minox Player i mene koji sam zajedno s njim ve 4 godine. Pa ta je to Minox Player? Minox Player je besplatna muzika aplikacija za Windows-e otvorenog koda1Minox Player koristi GNU/GPL v2.0 licencu koja doputa korisnicima, hobistima i developerima da slobodno preuzmu izvorni kod Minox Player-a, modifikuju ga, preprodaju ili jednostavno stvore svoju verziju aplikacije s jedinom abavezom prema njegovom uvaenom developeru a to je objava modifkovane verzije i novih dodataka u krajnjem smislu. Za vie pogledaj: https://www.gnu.org/licenses/gpl-2.0.html

koja je napisana u VB.NET2VB.NET ili Visul Basic 2008/10 je programski jezik koji dolazi iz Microsoft Visual Studio 2008/10/12 prodice progrtamskih jezika a koji nam omoguava izradu vrlo kvalitetnih softver rjeenja i interaktivnih aplikacija razliite namjene. Za vie pogledaj: http://it-ebooks.info/book/2829/

programskom jeziku. Minox Player pogoni vrlo moni Windows Media Player API3API u informatikom argonu predstavlja radni engine koji pogoni aplikaciju odnosno engleska skraenica od (Application Programming Interface). Zapravo se radi o biblioteci sa skupom predefinisanih funkcija koje developeri mogu lahko iskoristiti za izradu svoje aplikacije ili unapreenje postojee biblioteke.

i .NET Framework 3.5 SP14.NET Framework 3.5 SP1 predstavlja radni okvir ili kostur aplikacije nastale u Visual Studio programskim jezicima. U sutini se radi o glavnom engineu na kojem se pokreu .NET applikacije i na kojem u osnovi poivaju svi noviji Windows operativni sistemi od Win Vista, 7, 8 i 10. Za vie pogledaj: https://msdn.microsoft.com/en-us/library/zw4w595w%28v=vs.110%29.aspx

. U softwerskoj arhitekturi Minox Player predstavlja WFA5WFA ili (eng: Windows Forms Application) predstavlja desktop interfejs aplikaciju koja je dio VB.NET programskog jezika kao i svih drugih programskih alata iz Visual Studio porodice a koja developeru omoguava vrlo jednostavnu izradu aplikacija sa bogatim interfejsom iji je izvorni kod ve unaprijed pripremljen i spreman za proirenje i modifikaciju. Za vie pogledaj: https://msdn.microsoft.com/en-us/library/ms172749.aspx

tip aplikacije za Desktope namjenjenim iskljuivo 4produciranju .mp3 formata datoteka. 8. januara 2015. godine popularni informatiki portal INFO6Zvaninu recenziju Minox Player koju je uradio portal INFO pogledaj na ovom linku: http://www.info.ba/software/3028/recenzija-minox-player-domaci-audio-player-amar-tufo-softver

je uradio i prvu slubenu recenziju Minox Player-a gdje se apelovalo na dodatak naprednih funkcija i bolje manipulisanje osnovnim opcijama ovog player-a kako bi se zakrpili postojei i uklonili bilo koji novi bagovi. Sa svojom zvaninom facebook stranicom kao i slubenom web stranicom, Minox Player7Vie o Minox Player-u posjetite zvaninu web stranicu projekta: http://www.minoxmp3player.blogspot.com

predstavlja idealan sofwer projekat koji je stalno u razvoju i koji e u budunosti dobiti set novih i znatno naprednijih funkcija koje nisu postojale u starijim izdanjima ovog player-a. Do tada puno toga treba da se odradi i svaki novi korak (opcija) predstavlja novi izazov kojem treba pristupiti na to adekvatniji nain kako bi njegova implementacija na Minox Player-u prola to bolje bez ikakvih bagova koji bi mogli unestabiliti ovaj player i dati mu lo poziv. No, ovo je druga strana Minox Player prie koju neemo ovdje iznositi. Vrijeme je da krenemo u posao. Prije nego li dizajniramo i implementiramo novu temu na Minox Player, ja predlaem da se ukratko upoznamo sa radnim zadatkom i pogledamo ta zapravo treba da uradimo i kakav rezultat treba na kraju da dobijemo.

Slika1: Minox Player Flat Brown tema

5Na slici 1 je prikazan flat brown tema Minox Player-a koja u punom modu zapravo predstavlja vrlo pripamljivu temu koja uveliko istie ve krupne kontrole koje Minox Player ima. No, u ovome zadatku emo dodati i implementirati programski kroz VB.NET jednu potpuno ivopisniju temu Minox Player-u koja mjenja njegov dosadanji izgleda a uz to donosi i novi logo koji zaista izgleda fantastian. Evo kako naa nova tema po zavretku naeg posla treba da izgleda.

Slika2: Minox Player Lime Green tema

Ovo je tema koju e Minox Player kasnije da dobije kada zavrimo na zadatak. Obzirom da sam vas uveliko upoznao kako s Minox Player-om tako i radnim zadatkom, zaboravio sam da dodam kako je interfejs Minox Player-a raen u Adobe Photoshop CS 2.0 pa stoga pretpostavljam da znate barem osnove Adobe Photoshop-a ali i osnove programiranja a ako ste ve nekada ranije radili neke svoje aplikacije to e vam uveliko pomoi da onda shvatite i nauite rad u Minox Player SDK-u. Odmah da vas napomenem kako ovo nije nikakav lanak za poetnike niti su ovo osnove programiranja, cilj ovog lanka je da vam pokae razvoj Minox Player-a kroz potpuno noviji nain nego to se to u struci radi. Stoga, ukoliko ne znate osnove programiranja da li u C++8Osnove C++ programskog jezika pogledaj na ovoj stranici: http://www.cplusplus.com/doc/tutorial/

ili u VB.NET-u9Osnove VB.NET programskog jezika pogledaj na ovoj stranici: http://www.tutorialspoint.com/vb.net/

onda vam preporuujem toplo da ih savladate.62. Implementacija Green Lime teme na Minox Player

Minox Player je u svom posljednjem izdanju10Posljednje izdanje Minox Player-a je dostupno na ovom linku: http://sourceforge.net/projects/minoxplayer/

objavljen sa setom poprilino korisnih i 'naprednih' funkcija koje bacaju potpuno drugo svjetlo na njegov rad ali i moj kredibilitet. U ostalom govore o tome koliko ja cjenim ovaj svoj rad i smatram ga svojim zatitnim znakom. Niti jedna opcija ne privlai panju programa kao njegov izgled odnosno interfejs. Interfejs govori puno toga o vaoj aplikaciji, njenoj ozbiljnosti i naravno vaem trudu i mati koju ste primjenili kako bi vaa aplikacija zaivila. Upravo iz ovih razloga WFA tipovi aplikacija jesu idealno rjeenje kada vam je potreban bogat i kvalitetan interfejs a ne elite se zamarati njegovim programskim implementacijama. Vas zanima kod koji se nalazi iza vaeg interfejsa. Tako je i s Minox Player-om. Minox Player upravo i odskae tako visoko ba zbog svog interfejsa koji je uraen na skoro profesionalan nain. Cilj mi je bio da player skrene panju krajnjeg korisnika ali i da bude jednostavnog izgleda sa osnovnim setom funkcija koje ima svaki poznati muziki player.

Slika3: Minox Player SDK Slika4: Default Metal thema

7Ove dvije gornje slike su nastale direktno iz Minox Player SDK-a. Na slici 3 je prikazana hijerarhija Minox Player-a odnosno djelovi koji ine Minox Player. Na slici 4 je prikazan default izgled koji se nalazio u svim prethodnim izdanjima Minox Player-a dok je u zvaninom SDK-u Minox Player zadrao ovaj default izgled bolje poznat kao Metal tema. Dobro, vrijeme je da zaponemo programiranje. Prije nego li zapiemo bilo kakav kod, trebamo se upoznati sa interfejsom Minox Player-a. A evo kako on izgleda: (1) (9)

(6)

(7)

(2) (8)

(3)(4) (5)

Slika5: Interfejs Minox Player-a

Ovo su dakle djelovi interfejsa11Interfejs Minox Player-a je kreiran iz djelova koristei Adobe Photoshop CS3 a kasnije CS2. Takva metoda izrade interfejsa mi omoguava laku manipulaciju tijekom njegovog sastavljanja i manje koda prilikom razvoja aplikacije. Svaki dio interfejsa je obiljeen akronimom minox i nazivom djela interfejsa recimo minoxHead( ). AmarTufo, Minox Player 2015.

koji ine Minox Player. Oni su unaprijed pripremljeni kako ne biste morali vi da ih sami dizajnirate ili pravite, sve to je potrebno je da uitate (eng: Import) ove postojee slike i to je sve. Na narednoj slici je prikazana legenda interfejsa Minox Player-a. 89

Slika6: Legenda interfejsa Minox Player-a

Dakle, interfejs Minox Player-a se sastoji od 9 komponenti da ih ne nabrajam nanova ovdje. Uglavnom se radi djelovima Minox Player-a koji su svaki zasebno raeni u Adobe Photoshop programu i kako takvi ubaceni u Minox Player. Interfejs Minox Player-a je raen u pikselima odnosno svaki njegov element bio on minoxHead_LIME (406 x 35 px) zapravo ima svoju duinu i irinu u pikselima. Na osnovu tih dminezija u Adobe Photoshop-u su i kreirani ostali djelovi Minox Player interfejsa. Oni zajedno kada se spoje ine prelijep sklop i vrlo aren interfejs koji kao i da nije sastavljen iz djelova. Upravo slika5 predstavlja interfejs (limeGreenTema) koji treba da implementiramo ali programski kroz VB.NET kako bismo isti vidjeli uivo u akciji na Minox Player-u. Prvu stvar koju treba da uradimo jeste da u kodu kreiramo novu rutinu ili metodu (eng: Sub)12Svaka se nova metoda odnosno varijabla u VB.NET-u definie koristei Public Sub imeMetode( ) a zavrava se funkcijom End Sub koja oznaava kraj deklaracije nove metode. U C++ programskom jeziku se nova funkcija ili metoda programa definie koristei void imeFunkcije { a zavrava se funkcijom } koja opet oznaava kraj deklaracije iste.

. Metoda e nositi ime limeGreen unutar koje emo programski upisati cio interfejs Minox Player-a. Evo kako izgleda implementacija metode za limeGreen temu Minox Player-a.

Slika7: Implementacije metode limeGreen u VB.NET-u

10

Slika8: Importovanje limeGreen teme u resource folder Minox Player-a

A za one koji ne znaju ta je Resource13Resource folder se moe najjednostavnije objasniti kao multimedia folder iz kojeg aplikacija ita svoj interfejs. Naime, u sluaju Minox Player-a cio njegov interfejs je ve unaprijed uitan tako da je programski kontrolisan tijekom njegovog renderovanja.

folder u VB.NET-u, evo ta je? Resource folder sadri multimedijalne datoteke koje aplikacija koristi prilikom prikazivanja (eng: Rendering) teksta, slike, zvuka ili videa, najjednostavnije reeno. Upravo za nas Resource folder igra glavnu ulogu jer iz njega emo pozvati sve djelove Minox Player-a kako su naznaeni na legendi njegova interfejsa kako bismo dobili cjelokupnu i monu limeGreen temu. Vratimo se naoj metodi limeGreen i upiimo ovaj dio koda.

11

Slika9: Izvorni kod limeGreenTeme za Minox Player

Ako malo pogledate ovaj dio koda primjetit ete ve navedene djelove interfejsa sa slike5. Iako stoji da slika vrijedi 1000 rijei ona vam sigurno nee doarati niti pokazati pravu privlanost interfejsa Minox Player ukoliko to ne testirate sami. Ali o tome emo neki drugi put. Vratimo se naoj metodi i nastavimo s implementacijom interfejsa. to se tie ovog djela koda, na glavni interfejs kod je uspjeno programiran, testiran je kod mene na dev maini na sve mogue bagove tako da se ne trebate brinuti da li je ovaj dio koda bagovit. Sada je potrebno da se vratimo na glavnu formu Minox Player -a tanije na njegov Styler14Styler padajui menu Minox Player-a koji se otvara klikom lijevog dugmeta mia. Na njemu se nalaze neke standardne opcije ovog programa kao i opcija za pristup temama koje su uitane u Minox Player.

i tamo odaberemo Themes and Skins i dodamo podopciju LimeGreen.

Slika10: Padajui menu Minox Player-a

12

Nakon unosa gore priloenog koda sa slike9 ostaje nam da unesemo posljednje djelove koda pod opciju LimeGreen kako bi to sve lijepo funkcionisalo.

Slika11: Izvorni kod za opciju limeGreenTeme na Minox Player-u

Na ovoj slici data je lista tema15Minox Player na sebi ima 10 aktivnih tema koje korisnik moe vrlo lahko odabrati klikom na eljenu temu pri emu se odabrana tema selektuje kao aktivna. Unutar izvornog koda nalazi se 18 tema koje su uitane u Minox Player i koje se u developer modu mogu pozvati i naravno vrlo lahko modifikovati.

koje su uitane u Minox Player. Stoga sam kreirao selektor metodu koja mi pokazuje koja je tema aktivna odnosno koja tema je trenutno odabrana. Tako je Minox Player bogatiji po svojim opcijama to govori u prilog ozbiljnosti ovog player-a. No, da ne duimo puno. Nakon to se ovaj kod unese unutar Minox Player-a trebali biste dobiti sljedee rezultate.

Slika12: Potpuno implementirana limeGreenTema na Minox Player-u

Dakle, ovako izgleda naa limeGreenTema za Minox Player programski implementirana kroz VB.NET programski jezik. Ovo je bio nain na koji Minox Player dobija svoj novi interfejs odnosno novi izgled koji uveliko odie i ini upotrebu ovog programa jo zanimljivijom nego prije. Kao to moete vidjeti na ovoj slici, implementacija limeGreenTeme je prola bez ikakvih potekoa i bagova sa selektorom koji korisniku pokazuje da Minox Player koristi limeGreenTemu kao zadanu. Jedina mana kod tema koje Minox Player koristi jeste i to to te teme nisu zadane odnosno jedanput kada se Minox Player zatvori i ponovo pokrene on se vraa na zadanu temu ali ne i na ovu koja je trenutno odabrana. Obzirom da ovaj tehniki lanak nije imao za cilj da razjasni tehnike nedostatke Minox Player-a te stoga nema potrebe da napominjem mane i nedostatke Minox Player-a iako ih ima. S bagovima u se ja uhvatiti u kotac u neto skorije vrijeme. A za sada Minox Player obavlja svoj posao jako dobro i po meni vrlo zadovoljavajue nego to se to oekivalo. Ono to dolazi u budunosti kada je rije o ovom playeru jeste serija unapreenja, dotjeravanje izgleda, performansi i umanjenje zauzea radne memorije pri pokretanju, implementacija ekstenzije i mnotvo toga drugog. 13 143. Zakljuak:

Minox Player za sada predstavlja jako kvalitetan komad softvera i ono to ga ini posebnim u odnosu na ostale aplikacije ove vrste jeste to to je player u cjelosti napisan u VB.NET-u kao WFA (Windows Forms Application) aplikacija to razvoj ovog playera ini izuzetno zanimljivim i do sada najboljim projektom koji je do sada izaao pod mojim imenom. U osnovi, razvoj Minox Player-a za mene predstavlja jedno veliko iskustvo, jednu posebnu avanturu i jednu priu na koju sam ponosan jer razvijajui Minox Player ja zapravo jaam svoje znanje iz VB.NET-a koje sve do nedavno i nije bilo ba tako jako dok ve sada, sada je to druga pria. No, ono to predstoji u budunosti za ovu aplikaciju jesu novine, poboljanja osnovnih funkcija ovog player-a, bolji nain manipulisanja grekama (eng: error handling) pri pokretanju pojedinih funkcija, ispravka baga folder drag & drop funkcije, poboljanje i optimizacija aplikacije u cjelosti za bre pokretanje i jo nekih novih funkcija koje se planiraju i koje bi Minox Player mogao u budunosti imati. Za sada je player jako kvalitetna aplikacija koja do due ima neke bagove ali ne tako strane da umanjuju ili smetaju rad Minox Player-a. Ono to bi pak trebalo da se uradi u skorijoj budunosti jeste zamjena API-a koji pogoni Minox Player a to je Windows Media Player Library kojeg Minox Player koristi za reprodukciju .mp3 formata datoteka. U ovom smislu budui API16API Application Programming Interface

koji bi mogao pogoniti Minox Player bi bio BASS. Zato BASS? Prvo zato jer se radi o audio libraryu koji pogoni neke od vrlo kvalitetnih aplikacija ove vrste kao to je Spider Player17I razvoj Spider Player-a je nedavno prekinut pa o tome saznaj vie ovdje: https://forum.raymond.cc/threads/spider-player-discontinued-pro-version-license-to-everyone.26476/

koji je po svojoj funkcionalnosti predstavljao ozbiljnu konkurenciju Winampu iji je razvoj nedavno prekinut18O Winampu vidi vie ovdje: http://forums.winamp.com/showthread.php?t=374929

. Ono to je dobro kod BASS-a jeste njegova kompatibilnost sa VB.NET-om gdje bi se vrlo lahko mogle implementirati skoro sve funkcije koje Minox Player sada ima pa i puno vie od toga. Ali, ovo je sada sve na dugom tapu i Minox Player e i u narednim izdanjima raditi na WMP-u tako da moemo oekivati seriju poboljanja kako kod rada pa tako i u performansama Minox Player-a. Ono to se pak nee mjenjati jeste razvojno okruenje na kojemu se nalazi Minox Player SDK a to je VB.NET u kojem se Minox Player razvija jo od 2012. godine. Na samom kraju mogu samo da dodam da sam u sutini jako ponosan na sebe i na Minox Player koji je postao dio mene a ja dio njega, jedna moja jako uspjena developerska pria koja se i dalje nastavlja i ja se nadam da e tako i ostati i da u u budunosti na svijetlo dana iznijeti jo boljih i naprednijih izdanja Minox Player-a.

5. Linkovi i napomena:

Napomena autora: Ovaj rad je iskljuivo autorsko djelo u kojem je autor, u daljem djelu ovog teksta (Amar Tufo) opisao implementaciju i nain programiranja interfejsa Minox Player-a na njegovom zvaninom SDK-u u VB.NET-u. Sve slike i tekst ovoga rada pripadaju iskluivo njegovom autoru i nisu ni u kojem sluaju plagijat niti su kopirane na bilo koji nain sa web sajtova. Ukoliko su u ovom radu koritene slike ili tekst web sajtova ili drugih autora, u tu svrhu su u ovom radu navedene poveznice do njihovih uvaenih autora.

Lista poveznica:

Posjeti zvaninu web stranicu projekta:http://www.minoxmp3player.blogspot.com

Facebook stranica Minox Player-a: http://www.facebook.com/MinoxSoftware

Minox Player na Twitter-u:https://twitter.com/minoxplayerteam

Minox Player Source Forge stranica:http://sourceforge.net/projects/minoxplayer/

Minox Player crowfunding campaign on IndieGohttps://www.indiegogo.com/projects/minox-player#/story

Vidi slubenu recenziju Minox Player-a /Portal INFOhttp://www.info.ba/software/3028/recenzija-minox-player-domaci-audio-player-amar-tufo-softver

Autor: Amar TufoMinox Player Developer Amar Tufo & Minox Player, 2015http://www.amartufointeractive.blogspot.com