Forside til eksamensprojekt

Størrelse: px
Starte visningen fra side:

Download "Forside til eksamensprojekt"

Transkript

1 Forside til eksamensprojekt INGENIØR HØJSKOLEN KØBENHAVN OOPA/MGA-T- 401 Center for Videreuddannelse Lautrupvang 15, Indgang 19 B DK Ballerup Tlf: Fax: Mail: Sæt X i rubrikken under dit fag: Underviser: Jacob Nordfalk Eksamensform: Eksamensform kan ej vælges - er udelukkende individuel eksamen Enmandsprojekt: Q Gruppeprojekt Studienr: Navn: Lise Andreasen Studienr: Navn: Titel Android Disk Usage (ADU) Fortroligt Må anvendes i undervisningen X Dato: Den studerendes underskrift Den studerendes underskrift kun ved gruppeprojekt Afleveringsfrist: Projektet skal afleveres i 3 eksemplarer senest torsdag den 9. december 2010, mellem kl og kl i sekretariatet på CV, Lautrupvang, 19b, 1. sal, 2750 Ballerup Projekter modtages IKKE i ringbind eller brevordnere - kun i mindre tilbudsmapper eller med spiralryg af hensyn til videreforsendelse til vejleder og censor.

2 Indholdsfortegnelse Android Disk Usage (ADU)...3 Indledning / forord...3 Problemformulering...3 Afgrænsning...3 Selve analysen...4 Diagrammer...4 Programmering...14 DepthSetting...14 Splash...14 StartScreen...14 About...14 Help...15 AndroidFileBrowser...15 PresentTree...15 Andet...16 Hovedkonklusion...16 Kildetekster...17 assets/gettingstarted.html...17 res/drawable/judlogo.png...17 res/layout/about.xml...17 res/layout/afb_list_item.xml...17 res/layout/help2.xml...18 res/layout/start.xml...18 res/values/arrays.xml...18 res/values/colors.xml...19 res/values/strings.xml...19 res/values/styles.xml...19 res/sml/settings.xml...20 src/org/viewcreatetestactivity/afbadapter.java...20 src/org/viewcreatetestactivity/afboption.java...21 src/org/anddev/androidfilebrowser.java...21 src/org/jasonpratt/jdu/jdudirectory...23 src/org/jasonpratt/jdu/jdufile...24 src/org/jasonpratt/jdu/progressobserver.java...25 src/org/jasonpratt/jdu/tableview.java...26 src/org/me/aduapplication/about.java...28 src/org/me/aduapplication/depthsetting.xml...28 src/org/me/aduapplication/help.java...29 src/org/me/aduapplication/presenttree.java...29 src/org/me/aduapplication/splash.java...29 src/org/me/aduapplication/splashview.java...30 src/org/me/aduapplication/startscreen.java...31 AndroidManifest.xml

3 Android Disk Usage (ADU) Indledning / forord Blandt UNIX/Linux-folk er du en elsket kommando. Den giver hurtigt overblik over, hvor meget af disk-systemet, der allerede er brugt, og hvad der for alvor fylder. Der er grund til at tro, at Androidfolk kunne have tilsvarende behov (omend svaret jo nok altid vil være: det er mp3'er og videoer, der tager al pladsen). Problemformulering Skab et disk usage program, der passer til Android-miljøet, og kører korrekt. Nærmere bestemt: portér JDU 1, der er skabt i Java og kører i vindues-miljøer. Da JDU bl.a. benytter sig af mus, og har sine kommandoer fordelt i samme vindue, bliver en del af processen også at omskabe programmet til Android, der er præget af at have forskellige skærmbilleder til forskellige kommandoer. En fil-browser 2 bliver tilføjet, så den rigtige mappe kan findes, og siden tilføjes en hjælper 3, der kan lave en lidt pænere liste over mapper. Afgrænsning Fra starten af afgrænses to dele af JDU: at vise teksten i varierende størrelse, afhængig af mappens/filens størrelse, og at opdatere en progressbar, der giver vældig god mening i vindues-miljøer, men i Android enten skal droppes eller erstattes af Androids jeg arbejder mekanisme. Den oprindelige JDU blev først kraftigt beskåret, og siden blev et par klasser omdøbt. Således er JDUDirectory.java, JDUFile.java og PregressObserver.java stort set urørte i forhold til den oprindelige JDU, mens en del arbejde er foregået i TableView.java, der viser resultatet af at gennemsøge filsystemet. AfbAdapter.java og AfbOption.java er omdøbt og svagt modificeret

4 Selve analysen Diagrammer For at få lidt styr på, hvilket program jeg gerne vil lave, starter jeg med et diagram over de anvendte activities. Ud af dette kan jeg også regne ud, hvilke klasser jeg skal have i gang, der ligger bag den enkelte aktivitet. Samtidig kan jeg begynde at planlægge layouts og view. Android File Browser Present Tree Splash Start screen About Help Depth Setting AndroidFileBrowser har i sig et view, der kan erstattes af et nyt view. PresentTree er i samme situation. Derfor de 2 stiplede linjer. DepthSetting er en menu-aktivitet. Herefter planlægger jeg mine skærmbilleder. I det følgende vises skærmbilleder fra en version af programmet, det færdige program ser muligvis anderledes ud. 4

5 Uafhængigt af hvor man ellers er i programmet kan man vælge, hvilken dybde filsystemet skal vises med. Før vi går i gang, er der en splash-skærm. En enkelt mappe løber rundt på skærmen, afhængig af hvordan telefonen vender. Ved et enkelt tap kommer man videre til den egentlige startskærm. 5

6 Startskærmen skal have 3 knapper, der fører videre til hver sin nye aktivitet. Baggrundsfarven er tilpasset den blå, der senere bruges i præsentation af træet. Hjælpeskærmen træder ind foran startskærmen, og fortæller lidt om, hvordan programmet virker. Man bakker for at komme tilbage til start. 6

7 Tilsvarende fortæller About lidt om hvem der har lavet programmet. Nu er vi i gang. Vi bliver præsenteret for en liste af de mapper, der ligger i det øverste niveau af filsystemet. For hver mappe er der to muligheder: analysér denne mappe, og gå ned i denne mappe. Sidste mulighed bruges, når den mappe, der skal analyseres, ligger længere nede. 7

8 Her er der tappet på Enter /system, og den valgmulighed lyser op. Denne aktivitet genstarter nu, i /system i stedet for roden. Hvis der var blevet valgt Analyze, var vi gået videre til næste del. Her er vi i sidste trin, hvor usr er valgt som den øverste mappe, der skal analyseres, og i alt 4 niveauer vises. Hvis man fx tapper på config, bliver den den mappe, der vises yderste til venstre, og strukturen gentegnes. Hvis man er gået ned i træet, kan man komme op igen ved at tappe på den venstre mappe. Efter at have planlagt aktiviteter og skærmbilleder, går jeg i gang med klasser. Nedenstående skemaer er igen dannet efter programmeringen var gået i gang, og visse detaljer kan have ændret sig 8

9 inden det færdige program forelå. SensorEventListener View Sensorlytter + onsensorchanged(event) + onaccuracychanged(sensor, præcision) - int directorycolor - int tablebackgroundcolor - int textcolor - Paint textfont - int minfontsize int boundsx int boundsy int boundswidth int boundsheight int rectx int recty int rectwidth int rectheight SplashView Splash sview: SplashView sensormanager: SensorManager sensorlytter: Sensorlytter - oncreate(savedinstancestate) - onresume() - onpause() + boolean ontouchevent(e) + SplashView(context) + newcoords( pitch, roll ) + ondraw( g ) - paintdirectory( g, dir, depthleft, x, y, width, height ) - paintfile( g, f, x, y, width, height, rectcolor ) - paintlabel( g, name, size, x, y, width, height ) Activity For at starte godt, har vi en Splash. Udover at være en underklasse til Activity, har den også en SensorEventListener, der lægger mærke til hvordan telefonen vender. For at få tegnet noget på skærmen, er der også brug for SplashView, en underklasse til View. Den er meget i familie med TableView, og med lidt forsigtighed kunne der være noget med nedarvning fra en fælles overklasse. 9

10 Activity OnCLickListener Help StartScreen - oncreate(savedinstancestate) - oncreate(savedinstancestate) + onclick(v) About - oncreate(savedinstancestate) PreferenceActivity ListActivity DepthSetting - oncreate(savedinstancestate) + getdepth(context): int AndroidFileBrowser - DISPLAYMODE displaymode - ArrayList<String> directoryentries - File currentdirectory + oncreate(bundle icicle) - onrestoreinstancestate (Bundle icicle) - onsaveinstancestate(bundle icicle) - browsetoroot() - uponelevel() - browseto(adirectory) - fill(files) - onlistitemclick(l, v, position, id) 10

11 For at få det hele til at virke, skal der være nogle kedelige klasser: StartScreen, Help og About er der ikke så mange ben i. De er alle underklasser til Activity. 1 af dem implementerer desuden OnClickListener, så de kan fange klik: hvilken aktivitet går man videre til fra startskærmen, og hvilken dybde vælger man? DepthSetting er lidt spændende, fordi den er underklasse til PreferenceActivity og placerer information om dybden. AndroidFileBrowser er lånt andetsteds fra, og beskrives blot her. ArrayAdapter AfbOption - String name - String description AfbAdapter - ArrayList<AfbOption>: tests - LayoutInflater: minflater - int: layoutresource + getname(): String + setname(name) + getdescription(): String + setdescription(description) + AfbAdapter(Context context, int textviewresourceid, ArrayList<AfbOption> moptions) + getview(int position, View convertview, ViewGroup parent): View Senere vil jeg tale om, at jeg har brug for en adapter, der kan vise en liste over mapper. Jeg havde dog specielle behov, og var derfor også nødt til at låne en adapter, jeg kunne tilpasse. Ud af det kom der AfbOption (der kan indeholde den information, den enkelte linje i listen senere skal vise) og AfbAdapter. 11

12 JDUDirectory ProgressObserver - TreeSet subdirectories - TreeSet files + updatecurrentitem( itemname ) + needsupdate(): boolean + JDUDirectory(parent, dir, progressobserver) + getsubdirectories(): Set + getfiles(): Set - islink(file): boolean + refresh(progressobserver) + calculatesize() View JDUFile - JDUDirectory parent - File file - String name - long size - String sizestring - DecimalFormat sizeformatter + JDUFile( parent, file ) + JDUDirectory getparent() + File getfile() + String getname() + long getsize() + String getsizestring() + boolean equals( o ) + String tostring() Activity TableView - JDUDirectory root - int depth - int directorycolor - int filecolor - int tablebackgroundcolor - int tablebackgroundshadow - int tablebackgroundhighlight - int textcolor - Paint textfont - int minfontsize - HashMap areamap - HashSet listeners int boundsx int boundsy int boundswidth int boundsheight PresentTree + DEPTHCHOSEN: String + FILECHOSEN: String TableView tableview - oncreate(savedinstancestate) + boolean ontouchevent(e) + wasclicked(p) + TableView(context) + setroot( root ) + setdepth( depth ) + JDUFile getfileforlocation( p ) + ondraw( g ) - paintdirectory( g, dir, depthleft, x, y, width, height ) - paintfile( g, f, x, y, width, height, rectcolor ) - paintlabel( g, name, size, x, y, width, height ) 12

13 Nu kommer vi til de klasser, der faktisk laver alt arbejdet. Nogle klasser er overtaget stort set uændret: JDUDirectory, JDUFile og ProgressObserver, som allerede nævnt. (I praksis foretager ProgressObserver sig ikke noget længere, men det var lettere at beholde den, end at skulle skrive den ud af koden). Når JDUDirectory er klar, indeholder den data om filsystemet i et træ. Herefter omsætter TableView disse data til et view. Arbejdet med at tegne træet på skærmen foretages af metoderne paintdirectory(), paintfile() og paintlabel(). getfileforlocation() finder ud af hvilken mappe, der er blevet tappet på, og sætter derefter den rigtige handling i gang. ontouchevent() opfanger klik, og giver dem videre til wasclicked() (koden kunne effektiviseres her, ved at lægge de to metoder sammen). PresentTree modtager data om startmappe og dybde, sørger for at JDUDirectory bliver kaldt med disse parametre, og får siden TableView til at vise resultatet frem. Programmering DepthSetting En underklasse til PreferenceActivity. 3 muligheder præsenteres via settings.xml og arrays.xml. Her bruges metoder knyttet til menuer (addpreferencesfromresource(), getdefaultsharedpreferences()), så vi kan huske hvilken dybde, der blev valgt. I JDU valgte man dybde i en dropdown menu. Det vælger jeg ikke at gøre i ADU. Mest af alt fordi der ikke er behov for at kunne vælge helt op til dybde 8. Splash Denne første klasse er underklasse til Activity. Det mest interessante ved den er, at den har en SensorEventListener, der er sat op til at lytte efter, om telefonen vender og drejer. Hvis den gør det (og det gør den jo altid i en eller anden grad), vil denne information blive givet videre til SplashView. SplashView ligner den nedenfor nævnte TableView meget, og er faktisk en kannibaliseret version af samme. Med et tap kommer man videre til den rigtige startskærm. Metoden newcoords() ændrer på positionen af den kasse, der bliver tegnet på skærmen, og tegner den igen. (Lille problem lige nu: hører kun y-koordinaten?) StartScreen Denne klasse er underklasse til Activity, og implementerer OnClickListener, sidstnævnte så brugeren kan tappe på knapperne og vælge hvad der nu skal ske. Klassen indeholder en oncreate(), der via layout-filen start.xml viser 3 knapper frem og tilknytter en lytter til samme. onclick() opfanger klik, og gør noget passende afhængig af klikket. About Endnu en underklasse til Activity. En layout-fil, about2.xml, der fortæller noget om programmets oprindelse, vises. I manifestet er angivet, at denne fil vises som en dialog, dvs. henover 13

14 den bagvedliggende aktivitet, der gråes lidt ud, men ellers er synlig. Via et webview vises en htmlside. Help Gør tingene på næsten fuldstændig samme måde som About, via help.xml, dog uden webview. AndroidFileBrowser Her er tale om en underklasse til ListActivity, så der kan blive vist en liste, i dette tilfælde over mapper. oncreate() skulle gerne gemme hvilken mappe, man har fået bladet ned i, så det ikke gør noget, telefonen bliver vendt om. Dette virker i skrivende stund ikke endnu. Der er metoder, der tillader at man kan vandre rundt i filsystemet. Desuden vil metoden fill() danne en liste over de mapper, man kan se netop nu. Den bliver sandsynligvis kaldt mere end én gang undervejs. Den almindelige adapter egner sig rigtig godt til at få vist noget, der indeholder én variabel tekst pr. linje. Research viste, at hvis man skulle noget mere avanceret, skulle man tilsidesætte klassen ArrayAdapter, og lave sin egen. Jeg faldt på nettet over en adapter, der kunne det jeg havde brug for (den viste 2 tekster og 1 billede), og som kunne tilrettes mine formål. Det blev til AfbAdapter (der altså er en underklasse til ArrayAdapter) og AfbOption (der indeholder de data, en enkelt linje har brug for). Som jeg bruger AfbAdapter, lader jeg hver linje indeholde 2 stk. information, den ene ordet enten Analyze eller Enter, den anden stien til mappen. afb_list_item.xml viser en enkelt linje. onlistitemclick() er blevet væsentligt ændret. Oprindeligt skulle den blade frem til en fil, og så vise den. Jeg har brug for slet ikke at vise filer, blade frem til en mappe, og sende navnet på den videre. Desuden skal den kunne holde styr på, at hver mappe bliver vist 2 gange. Mappenavnet sendes videre via putextra(), der lader et Intent få ekstra information med. PresentTree Den sidste underklasse til Activity. Den gør ikke meget andet end at kalde TableView, og vise det resulterende View frem. Ganske kort: JDUDirectory afsøger filsystemet og skaber en datamodel af samme. Her er der behov for at skelne mellem JDUFile og JDUDirectory. Et JDUFile-objekt har et JDUDirectory som parent (en fil ligger i en mappe), mens et JDUDirectory bl.a. også har undermapper og filer. ProgressObserver er der stadig af historiske årsager, men bliver i praksis ikke brugt. TableView er ændret ganske meget, da den grafiske del er helt anderledes på Android. Der er tilføjet en ontouchevent(), for at fange tap (TableView havde en anden mekanisme til at opfange klik i vindues-miljøet). getfileforlocation() sammenligner koordinaterne med tappet med de tegnede kasser, for at finde den rigtige kasse og dermed den rigtige mappe at fokusere på fremover. ondraw() erstatter også en tidligere metode. Det er desuden her der måles på, hvor stort mit canvas er, så jeg senere kan bruge de mål, når alle kasserne skal tegnes. Så har der også været lidt roderi med, om rektangler måles på hvor bredde/høje de er, eller om der gives koordinater for nederste, højre hjørne. 14

15 Den del af koden, der tilpasser teksten til kasserne, springes helt over. Rigtig meget arbejde, der ikke beviser ret megen ny Android-viden. Andet Mit AndroidManifest.xml peger bl.a. på jdulogo.png som ikon for applikationen. Udover hvad man normalt arbejder med på Android (colors.xml, strings.xml) fulgte der en styles.xml med med afb_list_item.xml. Hovedkonklusion En af de forhindringer, der for alvor gav mig bryderier var: hvordan håndterer man et filsystem, der har symbolske links, og derfor i princippet kan have mapper i uendelig dybde? Det lykkedes ikke at finde mig en løsning, men til gengæld fandt jeg mange tegn på, at andre har haft samme problem. Metoden islink() var et af mine forsøg på at løse problemet. Andre ting har nok primært været svære, fordi, nå ja, nogle gange ser man ikke lige det, der er for næsen af en. Således er min splash-skærm ikke blevet helt færdig, fordi jeg ikke mestrer det at bruge sensorer, og jeg har en menu-skærm, der ikke vil komme frem som en menu. 15

16 Kildetekster assets/gettingstarted.html <html> <head> <title>adu Getting Started</title> </head> <body style="background color:#0089fa;"> <h1>the Absolute Basics:</h1> <blockquote> <font size=+1> <p> <b>1.</b> Click "Go!" to select a start directory. </p> <p> <b>2.</b> Wait while ADU scans the directories and files. </p> <p> <b>3.</b> Examine the resulting table, which shows how your disk space is being used <ul> <li>you can click on subdirectories to examine them in more detail, and you can click on the left most directory to expand your view one level</li> <li>if you are unhappy with the default depth of 3 (3 columns), choose menu to change it.</li> </ul> </p> <p> <b>4.</b> For more information, visit <a href="http://jasonpratt.org/software/jdu/">http://jasonpratt.org/software/jdu/</a></li> </p> </font> </blockquote> </body> </html> res/drawable/judlogo.png res/layout/about.xml <?xml version="1.0" encoding="utf 8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10dip"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" /> </ScrollView> res/layout/afb_list_item.xml <?xml version="1.0" encoding="utf 8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingleft="8dip" android:paddingright="8dip" android:paddingtop="5dip" android:paddingbottom="8dip" android:orientation="horizontal" > 16

17 <TextView android:layout_width="100dip" android:layout_height="wrap_content" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> res/layout/help2.xml <?xml version="1.0" encoding="utf 8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10dip"> <WebView android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1.0" /> </ScrollView> res/layout/start.xml <?xml version="1.0" encoding="utf 8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="fill_parent" android:layout_width="fill_parent" android:padding="30dip" android:orientation="horizontal"> <LinearLayout android:orientation="vertical" android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_gravity="center"> <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_gravity="center" android:layout_marginbottom="25dip" android:textsize="24.5sp" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout> </LinearLayout> res/values/arrays.xml <?xml version="1.0" encoding="utf 8"?> <resources> <string array name="listarray"> <item>2</item> <item>3</item> <item>4</item> </string array> <string array name="listvalues"> <item>2</item> <item>3</item> <item>4</item> </string array> </resources> 17

18 res/values/colors.xml <?xml version="1.0" encoding="utf 8"?> <resources> <color name="background">#ff0089fa</color> <color name="dirbackground">#ffb8d6ff</color> <color name="filebackground">#ffffe0c7</color> <color name="text">#ff000000</color> <color name="white">#fff</color> <color name="black">#000</color> <color name="red">#c6360a</color> <color name="green">#688f2b</color> <color name="orange">#f48905</color> <color name="dark_blue">#003366</color> <color name="grey">#888888</color> </resources> res/values/strings.xml <?xml version="1.0" encoding="utf 8"?> <!! Excerpted from "Hello, Android! 3e",! published by The Pragmatic Bookshelf.! Copyrights apply to this code. It may not be used to create training material,! courses, books, articles, and the like. Contact us if you are in doubt.! We make no guarantees that this code is fit for any purpose.! Visit for more book information. > <resources> <string name="app_name">adu</string> <string name="main_title">android Disk Usage</string> <string name="continue_label">continue</string> <string name="go_label">go!</string> <string name="about_label">about</string> <string name="help_label">help</string> <string name="depth_title">choose depth</string> <string name="depth_label">choose depth (tmp)</string> <string name="depth_text">the next step may take a few seconds</string> <string name="two_label">2</string> <string name="three_label">3</string> <string name="four_label">4</string> <string name="about_text">\ ADU: Android Disk Usage\nBased on JDU: Disk Usage, version 1.1, (C) 2001, Jason Pratt.\nAlso uses AndroidFileBrowser, and a special ArrayAdapter, android listview via listadapter/. Ported by Lise Andreasen. </string> <string name="help_text">\ The Absolute Basics:\n1. Click "Go!" to select a start directory. Then choose a depth.\n2. Wait while ADU scans the directories and files.\n3. Examine the resulting table, which shows how your disk space is being used\n you can click on subdirectories to examine them in more detail, and you can click on the left most directory to expand your view one level\n4. For more information, visit </string> <string name="up_one_level">..</string> <string name="current_dir">.</string> <string name="analyze_label">analyze</string> <string name="enter_label">enter</string> <string name="test_title">hello world</string> </resources> res/values/styles.xml <?xml version="1.0" encoding="utf 8"?> <! Styling file > <resources> <style name="listseparatortextviewstyle" <item name="android:layout_height">wrap_content</item> <item name="android:layout_width">fill_parent</item> <item name="android:textsize">15dip</item> <item name="android:paddingtop">2dip</item> <item name="android:paddingbottom">3dip</item> <item name="android:paddingleft">5dip</item> <item name="android:paddingright">10dip</item> <item <item name="android:shadowcolor">#111111</item> <item name="android:shadowradius">1</item> <item name="android:shadowdy">1</item> <item name="android:textstyle">bold</item> <item </style> 18

19 <style name="listviewstyle" <item </style> <style name="genericlistitemfirsttextview"> <item name="android:textsize">15dip</item> <item name="android:textstyle">bold</item> <item </style> <style name="genericlistitemsecondtextview"> <item name="android:textsize">13dip</item> <item </style> </resources> res/sml/settings.xml <?xml version="1.0" encoding="utf 8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <ListPreference android:key="listpref" android:title="adu depth" android:summary="choose the depth for the ADU presenter" /> </PreferenceScreen> src/org/viewcreatetestactivity/afbadapter.java package org.viewcreatetestactivity; import android.content.context; import android.util.log; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.arrayadapter; import android.widget.imageview; import android.widget.textview; import java.util.arraylist; import org.me.aduapplication.r; / Borrowed from android listview via listadapter/ / public class AfbAdapter extends ArrayAdapter<AfbOption> { private ArrayList<AfbOption> tests; private LayoutInflater minflater; private int layoutresource; public AfbAdapter(Context context, int textviewresourceid, ArrayList<org.ViewCreateTestActivity.AfbOption> moptions) { super(context, textviewresourceid, moptions); this.tests = moptions; this.minflater = LayoutInflater.from(context); this.layoutresource = textviewresourceid; public View getview(int position, View convertview, ViewGroup parent) { final ViewHolder holder; View v = convertview; if (v == null) { v = minflater.inflate(layoutresource, null); holder = new ViewHolder(); holder.firstline = (TextView) v.findviewbyid(r.id.directoryaction); holder.secondline = (TextView) v.findviewbyid(r.id.directoryname); v.settag(holder); else { // Get the ViewHolder back to get fast access to the TextView // and the ImageView. holder = (ViewHolder) v.gettag(); AfbOption c = tests.get(position); if (c!= null) { //loading first line holder.firstline.settext(c.getdescription()); holder.firstline.setvisibility(view.visible); //loading second line holder.secondline.settext(c.getname()); holder.secondline.setvisibility(view.visible); //todo create stringformatter return v; private static class ViewHolder { TextView firstline; TextView secondline; 19

20 src/org/viewcreatetestactivity/afboption.java package org.viewcreatetestactivity; / Borrowed from android listview via listadapter/ / public class AfbOption{ // 2 texts for a later ListActivity item private String name; private String description; public String getname() { return name; public void setname(string name) { this.name = name; public String getdescription() { return description; public void setdescription(string description) { this.description = description; src/org/anddev/androidfilebrowser.java / borrowed from Building an Android FileBrowser (list based)! (novice tutorial) / package org.anddev; import java.io.file; import java.io.ioexception; import java.util.arraylist; import android.app.listactivity; import android.content.intent; import android.os.bundle; // import android.util.log; import android.util.log; import android.view.view; import android.widget.listview; import java.util.collections; import java.util.logging.level; import java.util.logging.logger; import org.viewcreatetestactivity.afbadapter; import org.viewcreatetestactivity.afboption; import org.me.aduapplication.presenttree; import org.me.aduapplication.r; public class AndroidFileBrowser extends ListActivity { private enum DISPLAYMODE{ ABSOLUTE, RELATIVE; private final DISPLAYMODE displaymode = DISPLAYMODE.ABSOLUTE; private ArrayList<String> directoryentries = new ArrayList<String>(); private File currentdirectory; / Called when the activity is first created. / public void oncreate(bundle icicle) { super.oncreate(icicle); if (icicle == null) { currentdirectory = new File("/"); else { currentdirectory = (File) icicle.getserializable("currentdirectory"); // setcontentview() gets called within the next line, // so we do not need it here. browseto(currentdirectory); protected void onrestoreinstancestate (Bundle icicle) { // her genskabes indhold for alle views med id super.onrestoreinstancestate(icicle); protected void onsaveinstancestate(bundle icicle) { super.onsaveinstancestate(icicle); // gem indhold for alle views med id icicle.putserializable("currentdirectory", currentdirectory); 20

21 / This function browses up one level according to the field: currentdirectory / private void uponelevel(){ if(this.currentdirectory.getparent()!= null) this.browseto(this.currentdirectory.getparentfile()); private void browseto(final File adirectory){ AndroidFileBrowser.this.currentDirectory = adirectory; try { fill(adirectory.listfiles()); catch (IOException ex) { Logger.getLogger(AndroidFileBrowser.class.getName()).log(Level.SEVERE, null, ex); // create list of ittems, display them private void fill(file[] files) throws IOException { String tmpstring; this.directoryentries.clear(); ArrayList<AfbOption> m_options = null; // Add the "." and the ".." == 'Up one level' try { Thread.sleep(10); catch (InterruptedException e1) { this.directoryentries.add("."); if(this.currentdirectory.getparent()!= null) { this.directoryentries.add(".."); switch(this.displaymode){ case ABSOLUTE: for (File file : files){ if (file.isdirectory()) { this.directoryentries.add(file.getpath()); break; case RELATIVE: // On relative Mode, we have to add the current path to the beginning int currentpathstringlenght = this.currentdirectory.getabsolutepath().length(); for (File file : files){ if (file.isdirectory()) { tmpstring = file.getabsolutepath().substring(currentpathstringlenght); this.directoryentries.add(tmpstring); break; Collections.sort(directoryEntries); AfbAdapter directorylist; m_options = new ArrayList<AfbOption>(); AfbOption act_dir; int len = directoryentries.size(); for (int i = 0; i < len; ++i) { act_dir = new AfbOption(); act_dir.setname(directoryentries.get(i)); act_dir.setdescription("analyze"); m_options.add(act_dir); act_dir = new AfbOption(); act_dir.setname(directoryentries.get(i)); act_dir.setdescription("enter"); m_options.add(act_dir); // TODO deferred: list item same colors as rest of application directorylist = new AfbAdapter(this, R.layout.afb_list_item, m_options); this.setlistadapter(directorylist); // adapted to ADU protected void onlistitemclick(listview l, View v, int position, long id) { int selectionrowid = position / 2; int selectedaction = position % 2; // 0: analyze, 1: enter String selectedfilestring = this.directoryentries.get(selectionrowid); File clickedfile = null; if (! selectedfilestring.equals(".") &&!selectedfilestring.equals("..")){ switch(this.displaymode){ case RELATIVE: clickedfile = new File(this.currentDirectory.getAbsolutePath() + this.directoryentries.get(selectionrowid)); break; case ABSOLUTE: clickedfile = new File(this.directoryEntries.get(selectionRowID)); break; 21

22 if (selectedaction == 0) { // analyze Intent myintent; myintent = new Intent(AndroidFileBrowser.this, PresentTree.class); String mystring = ""; if (selectedfilestring.equals(".")) { //. mystring = selectedfilestring; else if(selectedfilestring.equals("..")){ //.. if(this.currentdirectory.getparent()!= null) { mystring = this.currentdirectory.getparentfile().getabsolutepath(); else { mystring = this.currentdirectory.getabsolutepath(); else { // not. not.. if(clickedfile!= null) { mystring = clickedfile.getabsolutepath(); myintent.putextra(presenttree.filechosen, mystring); startactivity(myintent); else { // enter if (selectedfilestring.equals(".")) { //. // Refresh this.browseto(this.currentdirectory); else if(selectedfilestring.equals("..")){ //.. this.uponelevel(); else { // not. not.. this.browseto(clickedfile); src/org/jasonpratt/jdu/jdudirectory / JDU: Disk Usage Copyright (c) Jason Pratt Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. / package org.jasonpratt.jdu; import android.util.log; import java.io.file; import java.io.ioexception; Jason Pratt / public class JDUDirectory extends JDUFile { protected java.util.comparator filecomparator = new java.util.comparator() { public int compare( Object o1, Object o2 ) { if( (o1 instanceof JDUFile) && (o2 instanceof JDUFile) ) { long size1 = ((JDUFile)o1).getSize(); long size2 = ((JDUFile)o2).getSize(); if( size1 < size2 ) { return 1; else if( size1 > size2 ) { return 1; else { return 0; return 0; // if it's not a File, don't bother ; protected java.util.treeset subdirectories = new java.util.treeset( filecomparator ); protected java.util.treeset files = new java.util.treeset( filecomparator ); public JDUDirectory( JDUDirectory parent, java.io.file dir, ProgressObserver progressobserver ) { super( parent, dir ); refresh( progressobserver ); 22

23 public java.util.set getsubdirectories() { return subdirectories; public java.util.set getfiles() { return files; // TODO problem if start directory is / /proc /sdcard /sys / borrowed from / private static boolean islink(file file) { try { if (!file.exists()) return true; else { String cnnpath = file.getcanonicalpath(); String abspath = file.getabsolutepath(); return!abspath.equals(cnnpath); catch(ioexception ex) { System.err.println(ex); return true; //islink synchronized public void refresh( ProgressObserver progressobserver ) { if( (progressobserver!= null) && progressobserver.needsupdate() ) { progressobserver.updatecurrentitem( getfile().getabsolutepath() ); java.io.file dir = getfile(); subdirectories.clear(); files.clear(); java.io.file[] children = dir.listfiles(); if( children!= null ) { for( int i = 0; i < children.length; i++ ) { // if (!islink(children[i])) { if( children[i].isdirectory() ) { subdirectories.add( new JDUDirectory( this, children[i], progressobserver ) ); else { // not a directory if( children[i].isfile() ) { files.add( new JDUFile( this, children[i] ) ); else { System.err.println( "Not a directory or a file: " + children[i].getabsolutepath() ); // isfile // //!islink if( (progressobserver!= null) && progressobserver.needsupdate() ) { progressobserver.updatecurrentitem( getfile().getabsolutepath() ); calculatesize(); public void calculatesize() { size = 0; for( java.util.iterator iter = subdirectories.iterator(); iter.hasnext(); ) { JDUDirectory d = (JDUDirectory)iter.next(); size += d.getsize(); for( java.util.iterator iter = files.iterator(); iter.hasnext(); ) { JDUFile f = (JDUFile)iter.next(); size += f.getsize(); src/org/jasonpratt/jdu/jdufile / JDU: Disk Usage Copyright (c) Jason Pratt Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 23

24 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. / package org.jasonpratt.jdu; Jason Pratt / public class JDUFile { protected JDUDirectory parent; protected java.io.file file; protected String name; protected long size = 1; protected String sizestring; protected java.text.decimalformat sizeformatter = new java.text.decimalformat( "#0.00" ); public JDUFile( JDUDirectory parent, java.io.file file ) { this.parent = parent; this.file = file; if( file!= null ) { this.name = file.getname(); this.size = file.length(); public JDUDirectory getparent() { return parent; public java.io.file getfile() { return file; public String getname() { if( name == null ) { // delayed lookup name = file.getname(); return name; public long getsize() { if( size == 1 ) { // delayed lookup size = file.length(); return size; public String getsizestring() { if( sizestring == null ) { // create on demand getsize(); // ensure size is up to date if( size < 1024 ) { sizestring = sizeformatter.format( size ) + " bytes"; else if( size < 1024L1024L ) { sizestring = sizeformatter.format( ((double)size)/((double)1024) ) + " KB"; else if( size < 1024L1024L1024L ) { sizestring = sizeformatter.format( ((double)size)/((double)1024l1024l) ) + " MB"; else if( size < 1024L1024L1024L1024L ) { sizestring = sizeformatter.format( ((double)size)/((double)1024l1024l1024l) ) + " GB"; else { sizestring = sizeformatter.format( ((double)size)/((double)1024l1024l1024l1024l) ) + " TB"; return sizestring; public boolean equals( Object o ) { if( o instanceof JDUFile ) { return ((JDUFile)o).getFile().equals( file ); else { return file.equals( o ); public String tostring() { if( file == null ) { return "null"; else { return file.getabsolutepath(); src/org/jasonpratt/jdu/progressobserver.java / JDU: Disk Usage Copyright (c) Jason Pratt Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), 24

25 to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. / package org.jasonpratt.jdu; Jason Pratt / public interface ProgressObserver { public void updatecurrentitem( String itemname ); public boolean needsupdate(); src/org/jasonpratt/jdu/tableview.java / JDU: Disk Usage Copyright (c) Jason Pratt Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. / package org.jasonpratt.jdu; import android.content.context; import android.graphics.canvas; import android.graphics.color; import android.graphics.paint; import android.graphics.point; import android.graphics.rect; import android.graphics.typeface; // import android.util.log; import android.view.motionevent; import android.view.view; Jason Pratt / public class TableView extends View { // private static final long serialversionuid = L; protected JDUDirectory root; protected int depth = 3; protected int directorycolor = Color.argb(255, 200, 230, 255 ); protected int filecolor = Color.argb(255, 255, 240, 215 ); protected int tablebackgroundcolor = Color.argb(255, 96, 96, 96 ); protected int tablebackgroundshadow = Color.argb(255, 32, 32, 32 ); protected int tablebackgroundhighlight = Color.argb(255, 196, 196, 196 ); protected int textcolor = Color.argb(255, 0, 0, 0); protected Paint textfont = new Paint(); // "SansSerif", Font.PLAIN, 14 ); protected int minfontsize = 4; protected java.util.hashmap areamap = new java.util.hashmap(); protected java.util.hashset listeners = new java.util.hashset(); protected int boundsx, boundsy, boundswidth, boundsheight; public boolean ontouchevent(motionevent e) { if (e.getaction() == MotionEvent.ACTION_DOWN) { Point p = new Point(1, 2); p.x = (int) e.getx(); p.y = (int) e.gety(); this.wasclicked(p); return true; 25

26 public void wasclicked(point p) { JDUFile f = getfileforlocation( p ); if( f instanceof JDUDirectory ) { JDUDirectory d = (JDUDirectory)f; if( TableView.this.root == d ) { if( d.getparent()!= null ) { TableView.this.setRoot( d.getparent() ); invalidate(); else { TableView.this.setRoot( d ); invalidate(); ////////////////// // Constructor ////////////////// public TableView(Context context) { super(context); setbackgroundcolor(tablebackgroundcolor); ////////////// // utility ////////////// public void setroot( JDUDirectory root ) { JDUDirectory oldroot = this.root; this.root = root; //firerootchanged( oldroot, root ); invalidate(); public void setdepth( int depth ) { this.depth = depth; invalidate(); public JDUFile getfileforlocation( Point p ) { // relate click to directory if( (p.x >= boundsx) && (p.x < boundswidth+boundsx) && (p.y >= boundsy) && (p.y < boundsheight+boundsy) ) { for( java.util.iterator iter = areamap.keyset().iterator(); iter.hasnext(); ) { // could be done more efficiently Rect bounds = (Rect)iter.next(); if( bounds.contains( p.x + boundsx, p.y + boundsy) ) { Object o = areamap.get( bounds ); if( o instanceof JDUFile ) { return (JDUFile)o; else { return null; return null; //////////////// // Painting //////////////// public void ondraw( Canvas g ) { super.ondraw(g); if( (root!= null) && (depth > 0) ) { areamap.clear(); boundsx = this.getleft(); boundsy = this.gettop(); boundswidth = this.getright() boundsx; boundsheight = this.getbottom() boundsy; paintdirectory( g, root, depth, boundsx, boundsy, boundswidth, boundsheight ); //paintdirectory( g, root, depth, bounds.x, bounds.y, bounds.width, bounds.height ); protected void paintdirectory( Canvas g, JDUDirectory dir, int depthleft, int x, int y, int width, int height ) { if( (width > 1) && (height > 1) ) { // TODO if painting dir with no subdirs... int columnwidth = width/depthleft; Paint rectcolor = new Paint(); rectcolor.setcolor(directorycolor); paintfile( g, dir, x, y, columnwidth, height, rectcolor ); areamap.put( new Rect( x, y, x + columnwidth, y + height ), dir ); if( depthleft > 1 ) { int subx = x + columnwidth; int suby = y; int subwidth = width columnwidth; 26

27 for( java.util.iterator iter = dir.getsubdirectories().iterator(); iter.hasnext(); ) { JDUDirectory subdir = (JDUDirectory)iter.next(); long subheight = ((long)heightsubdir.getsize())/dir.getsize(); if( subheight < 2 ) { break; paintdirectory( g, subdir, depthleft 1, subx, suby, subwidth, (int)subheight ); suby += subheight; for( java.util.iterator iter = dir.getfiles().iterator(); iter.hasnext(); ) { JDUFile subfile = (JDUFile)iter.next(); long subheight = ((long)heightsubfile.getsize())/dir.getsize(); if( subheight < 2 ) { break; rectcolor.setcolor(filecolor); paintfile( g, subfile, subx, suby, subwidth/(depthleft 1), (int)subheight, rectcolor ); areamap.put( new Rect( subx, suby, x + subwidth/(depthleft 1), y + (int)subheight ), subfile ); suby += subheight; protected void paintfile( Canvas g, JDUFile f, int x, int y, int width, int height, Paint rectcolor ) { if( (width > 1) && (height > 1) ) { Paint edgecolor = new Paint(); edgecolor.setcolor(textcolor); // text and edge should be same color g.drawrect(x, y, x+width, y+height, edgecolor); g.drawrect(x, y, x+width 1, y+height 1, rectcolor); if( height >= 14 ) { String namestring = f.getname(); if( namestring.trim().equals( "" ) ) { namestring = f.getfile().getabsolutepath(); String sizestring = f.getsizestring(); paintlabel( g, namestring, sizestring, x + 3, y + 15, width 40, height 2 ); protected void paintlabel( Canvas g, String name, String size, int x, int y, int width, int height ) { Paint lettercolor = new Paint(); lettercolor.setcolor(textcolor); lettercolor.settypeface(typeface.sans_serif); lettercolor.settextsize(10); / TODO deferred: fit text Used to be stuff here that fitted the text to the window / g.drawtext(name + " " + size, x, y, lettercolor); src/org/me/aduapplication/about.java package org.me.aduapplication; import android.app.activity; import android.os.bundle; public class About extends Activity { protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.about); src/org/me/aduapplication/depthsetting.xml package org.me.aduapplication; import android.content.context; import android.os.bundle; import android.preference.preferenceactivity; import android.preference.preferencemanager; // TODO why doesn't this activity appear, when I press the menu button? public class DepthSetting extends PreferenceActivity { protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); addpreferencesfromresource(r.xml.settings); 27

28 / Get the current value of the depth option / public static int getdepth(context context) { return Integer.parseInt(PreferenceManager.getDefaultSharedPreferences(context).getString("listPref", "3")); src/org/me/aduapplication/help.java package org.me.aduapplication; import android.app.activity; import android.os.bundle; import android.webkit.webview; public class Help extends Activity { private WebView webview; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.help2); webview = (WebView) findviewbyid(r.id.web_view); webview.loadurl("file:///android_asset/gettingstarted.html"); src/org/me/aduapplication/presenttree.java package org.me.aduapplication; import android.app.activity; import android.os.bundle; // import android.util.log; import java.io.file; import org.jasonpratt.jdu.jdudirectory; import org.jasonpratt.jdu.tableview; public class PresentTree extends Activity { public static final String FILECHOSEN = "org.me.aduapplication.file" ; public static final String DEPTHCHOSEN = "org.me.aduapplication.depth" ; TableView tableview; / Called when the activity is first created. / public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); //create model of file system String filechosen = getintent().getstringextra(filechosen); JDUDirectory myjdu = new JDUDirectory( null, new File(fileChosen), null ); // create picture of model tableview = new TableView(this); int depthchosen = 3; depthchosen = DepthSetting.getDepth(this); // depthchosen = getintent().getintextra(depthchosen, 2); tableview.setdepth(depthchosen); tableview.setroot( myjdu ); setcontentview(tableview); src/org/me/aduapplication/splash.java package org.me.aduapplication; import android.app.activity; import android.os.bundle; // import android.view.view; import android.util.log; import android.hardware.sensor; import android.hardware.sensorevent; import android.hardware.sensoreventlistener; import android.hardware.sensormanager; public class Splash extends Activity { SplashView sview; SensorManager sensormanager; Sensorlytter sensorlytter = new Sensorlytter(); 28

29 / Called when the activity is first created. / public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); sview = new SplashView(this); setcontentview(sview); protected void onresume() { super.onresume(); sensormanager = (SensorManager) getsystemservice(sensor_service); sview = new SplashView(this); setcontentview(sview); for (Sensor sensor : sensormanager.getsensorlist(sensor.type_all)) { sensormanager.registerlistener(sensorlytter, sensor, SensorManager.SENSOR_DELAY_NORMAL); protected void onpause() { super.onpause(); sensormanager.unregisterlistener(sensorlytter); class Sensorlytter implements SensorEventListener { public void onsensorchanged(sensorevent event) { int sensortype = event.sensor.gettype(); if (sensortype == Sensor.TYPE_ORIENTATION) { sview.newcoords(event.values[1],event.values[2]); public void onaccuracychanged(sensor sensor, int præcision) { // ignorér men vi er nødt til at have metoden for at implementere interfaces ; // Sensorlytter slut src/org/me/aduapplication/splashview.java package org.me.aduapplication; import android.content.context; import android.content.intent; import android.graphics.canvas; import android.graphics.color; import android.graphics.paint; // import android.graphics.point; import android.graphics.rect; import android.graphics.typeface; import android.util.log; import android.view.motionevent; import android.view.view; public class SplashView extends View { protected int directorycolor = Color.argb(255, 200, 230, 255 ); protected int tablebackgroundcolor = Color.argb(255, 96, 96, 96 ); protected int textcolor = Color.argb(255, 0, 0, 0); protected int headingcolor = Color.argb(255, 255, 0, 0); protected Paint textfont = new Paint(); // "SansSerif", Font.PLAIN, 14 ); int boundsx, boundsy, boundswidth, boundsheight; int rectx, recty, rectwidth, rectheight; public boolean ontouchevent(motionevent e) { if (e.getaction() == MotionEvent.ACTION_DOWN) { Intent i = new Intent(getContext(), StartScreen.class); getcontext().startactivity(i); return true; ////////////////// // Constructor ////////////////// public SplashView(Context context) { super(context); setbackgroundcolor(tablebackgroundcolor); rectx = 1; //////////////// // Moving //////////////// 29

Gode praksisser og arkitekturer i Android-programmering. Android - praksisser og arkitekturer Copyright Lund & Bendsen A/S

Gode praksisser og arkitekturer i Android-programmering. Android - praksisser og arkitekturer Copyright Lund & Bendsen A/S Gode praksisser og arkitekturer i Android-programmering 1 Om oplægsholderen Jacob Nordfalk nordfalk@lundogbendsen.dk Instruktør for Lund&Bendsen Ekstern lektor på IHK Underviser i Java SE, Java EE, Webserverprogrammering,

Læs mere

EuroForm OCR-B Installation Guide

EuroForm OCR-B Installation Guide EuroForm OCR-B Installation Guide Dansk For HP LaserJet Printers Installation Guide NOTE The information contained in this document is subject to change without notice. EuroForm makes no warranty of any

Læs mere

Løsning af skyline-problemet

Løsning af skyline-problemet Løsning af skyline-problemet Keld Helsgaun RUC, oktober 1999 Efter at have overvejet problemet en stund er min første indskydelse, at jeg kan opnå en løsning ved at tilføje en bygning til den aktuelle

Læs mere

Vejledning til at tjekke om du har sat manuel IP på din computer.

Vejledning til at tjekke om du har sat manuel IP på din computer. Indhold Vejledning til at, komme på nettet. (DANSK)... 2 Gælder alle systemer.... 2 Vejledning til at tjekke om du har sat manuel IP på din computer.... 2 Windows 7... 2 Windows Vista... 2 Windows XP...

Læs mere

how to save excel as pdf

how to save excel as pdf 1 how to save excel as pdf This guide will show you how to save your Excel workbook as PDF files. Before you do so, you may want to copy several sheets from several documents into one document. To do so,

Læs mere

Skærmtilpasning. Version 4.2. Administratorvejledning

Skærmtilpasning. Version 4.2. Administratorvejledning Skærmtilpasning Version 4.2 Administratorvejledning Januar 2016 www.lexmark.com Indhold 2 Indhold Historik over ændringer... 3 Oversigt...4 Konfiguration af programmet...5 Adgang til Embedded Web Server...

Læs mere

StarWars-videointro. Start din video på den nørdede måde! Version: August 2012

StarWars-videointro. Start din video på den nørdede måde! Version: August 2012 StarWars-videointro Start din video på den nørdede måde! Version: August 2012 Indholdsfortegnelse StarWars-effekt til videointro!...4 Hent programmet...4 Indtast din tekst...5 Export til film...6 Avanceret

Læs mere

DK - Quick Text Translation. HEYYER Net Promoter System Magento extension

DK - Quick Text Translation. HEYYER Net Promoter System Magento extension DK - Quick Text Translation HEYYER Net Promoter System Magento extension Version 1.0 15-11-2013 HEYYER / Email Templates Invitation Email Template Invitation Email English Dansk Title Invitation Email

Læs mere

RentCalC V2.0. 2012 Soft-Solutions

RentCalC V2.0. 2012 Soft-Solutions Udlejnings software Vores udvikling er ikke stoppet!! by Soft-Solutions RentCalC, som er danmarks ubetinget bedste udlejnings software, kan hjælpe dig med på en hurtigt og simple måde, at holde styr på

Læs mere

Hvordan vælger jeg dokumentprofilen?

Hvordan vælger jeg dokumentprofilen? Hvordan vælger jeg dokumentprofilen? Valget af OIOUBL profil i en konkret dokumentudveksling vil bl.a. afhænge af, hvilke OIOUBL profiler den anden part i udvekslingen understøtter. Et konkret eksempel

Læs mere

Boligsøgning / Search for accommodation!

Boligsøgning / Search for accommodation! Boligsøgning / Search for accommodation! For at guide dig frem til den rigtige vejledning, skal du lige svare på et par spørgsmål: To make sure you are using the correct guide for applying you must answer

Læs mere

University Colleges. Sådan kan du hjælpe dit barn med lektierne! Kristensen, Kitte Søndergaard. Publication date: 2011

University Colleges. Sådan kan du hjælpe dit barn med lektierne! Kristensen, Kitte Søndergaard. Publication date: 2011 University Colleges Sådan kan du hjælpe dit barn med lektierne! Kristensen, Kitte Søndergaard Publication date: 2011 Document Version Tidlig version også kaldet pre-print Link to publication Citation for

Læs mere

Status på det trådløse netværk

Status på det trådløse netværk Status på det trådløse netværk Der er stadig problemer med det trådløse netværk, se status her: http://driftstatus.sdu.dk/?f=&antal=200&driftid=1671#1671 IT-service arbejder stadig med at løse problemerne

Læs mere

SPECIALTRYKKERIETS KUNDE WEBPORTAL KOM GODT I GANG

SPECIALTRYKKERIETS KUNDE WEBPORTAL KOM GODT I GANG SPECIALTRYKKERIETS KUNDE WEBPORTAL KOM GODT I GANG Jeg håber du får fornøjelse af vores nye værktøj. WebApproval skal gøre det nemmere og mere sikkert for dig at godkende din tryksager. Har du spørgsmål,

Læs mere

Transformering af OIOXML til OIOUBL og OIOUBL til OIOXML

Transformering af OIOXML til OIOUBL og OIOUBL til OIOXML Microsoft Development Center Copenhagen, July 2010 OIOXML / OIOUBL Microsoft Dynamics C5 Transformering af OIOXML til OIOUBL og OIOUBL til OIOXML Indledning Indledning... 3 Anvendelse af værktøjet... 3

Læs mere

Backup Applikation. Microsoft Dynamics C5 Version 2008. Sikkerhedskopiering

Backup Applikation. Microsoft Dynamics C5 Version 2008. Sikkerhedskopiering Backup Applikation Microsoft Dynamics C5 Version 2008 Sikkerhedskopiering Indhold Sikkerhedskopiering... 3 Hvad bliver sikkerhedskopieret... 3 Microsoft Dynamics C5 Native database... 3 Microsoft SQL Server

Læs mere

Aalborg Universitet. Borgerinddragelse i Danmark Lyhne, Ivar; Nielsen, Helle; Aaen, Sara Bjørn. Publication date: 2015

Aalborg Universitet. Borgerinddragelse i Danmark Lyhne, Ivar; Nielsen, Helle; Aaen, Sara Bjørn. Publication date: 2015 Aalborg Universitet Borgerinddragelse i Danmark Lyhne, Ivar; Nielsen, Helle; Aaen, Sara Bjørn Publication date: 2015 Document Version Også kaldet Forlagets PDF Link to publication from Aalborg University

Læs mere

FIST-GPS3 I N S T A L L A T I O N S I N S T R U K S

FIST-GPS3 I N S T A L L A T I O N S I N S T R U K S FIST-GPS3 I N S T A L L A T I O N S I N S T R U K S GPSTF-patchbakker monteret med prætermineret kabel UDARBEJDET I SAMARBEJDE MED TDC Indhold 1 General information 2 Kit indhold 3 Montering af skuffer

Læs mere

Vores mange brugere på musskema.dk er rigtig gode til at komme med kvalificerede ønsker og behov.

Vores mange brugere på musskema.dk er rigtig gode til at komme med kvalificerede ønsker og behov. På dansk/in Danish: Aarhus d. 10. januar 2013/ the 10 th of January 2013 Kære alle Chefer i MUS-regi! Vores mange brugere på musskema.dk er rigtig gode til at komme med kvalificerede ønsker og behov. Og

Læs mere

Microsoft Dynamics C5. version 2012 Service Pack 01 Hot fix Fix list - Payroll

Microsoft Dynamics C5. version 2012 Service Pack 01 Hot fix Fix list - Payroll Microsoft Dynamics C5 version 2012 Service Pack 01 Hot fix 001 4.4.01.001 Fix list - Payroll CONTENTS Introduction... 3 Payroll... 3 Corrected elements in version 4.4.01.001... 4 Microsoft Dynamics C5

Læs mere

Aalborg Universitet. Økonomisk ulighed og selvværd Hansen, Claus Dalsgaard. Publication date: 2011

Aalborg Universitet. Økonomisk ulighed og selvværd Hansen, Claus Dalsgaard. Publication date: 2011 Aalborg Universitet Økonomisk ulighed og selvværd Hansen, Claus Dalsgaard Publication date: 2011 Document Version Tidlig version også kaldet pre-print Link to publication from Aalborg University Citation

Læs mere

Brugsanvisning. Installation Manual

Brugsanvisning. Installation Manual Manual size: 148 x 210 mm 175g copper paper(铜版纸印刷) UNIVERSAL BIL TAGBAGAGEBÆRER Brugsanvisning UNIVERSAL CAR ROOF RACK Installation Manual Model no. 10889 Tak fordi du valgte dette produkt, som vi håber

Læs mere

Citrix CSP og Certificate Store Provider

Citrix CSP og Certificate Store Provider Project Name Document Title TDC Citrix Citrix og Certificate Store Provider Version Number 1.0 Status Release Author jkj Date 5-10-2006 Trademarks All brand names and product names are trademarks or registered

Læs mere

Bilag J - Beregning af forventet uheldstæthed på det tosporede vejnet i åbent land Andersen, Camilla Sloth

Bilag J - Beregning af forventet uheldstæthed på det tosporede vejnet i åbent land Andersen, Camilla Sloth Aalborg Universitet Bilag J - Beregning af forventet uheldstæthed på det tosporede vejnet i åbent land Andersen, Camilla Sloth Publication date: 2014 Document Version Også kaldet Forlagets PDF Link to

Læs mere

Shared space - mellem vision og realitet. - Lyngby Idrætsby som case

Shared space - mellem vision og realitet. - Lyngby Idrætsby som case Downloaded from orbit.dtu.dk on: Jan 27, 2017 Shared space - mellem vision og realitet. - Lyngby Idrætsby som case Brinkø, Rikke Publication date: 2015 Document Version Peer-review version Link to publication

Læs mere

DET KONGELIGE BIBLIOTEK NATIONALBIBLIOTEK OG KØBENHAVNS UNIVERSITETS- BIBLIOTEK. Index

DET KONGELIGE BIBLIOTEK NATIONALBIBLIOTEK OG KØBENHAVNS UNIVERSITETS- BIBLIOTEK. Index DET KONGELIGE Index Download driver... 2 Find the Windows 7 version.... 2 Download the Windows Vista driver.... 4 Extract driver... 5 Windows Vista installation of a printer.... 7 Side 1 af 12 DET KONGELIGE

Læs mere

Introduktion til ActionScript, fortsat

Introduktion til ActionScript, fortsat Introduktion til ActionScript, fortsat Kaspar Rosengreen Nielsen kaspar@interactivespaces.net i n t e r a c t i v e s p a c e s. n e t Kaspar Nielsen, kaspar@interactivespaces.net 1 Dagens program Opsamling

Læs mere

Overfør fritvalgskonto til pension

Overfør fritvalgskonto til pension Microsoft Development Center Copenhagen, January 2009 Løn Microsoft Dynamics C52008 SP1 Overfør fritvalgskonto til pension Contents Ønsker man at overføre fritvalgskonto til Pension... 3 Brug af lønart

Læs mere

GUIDE TIL BREVSKRIVNING

GUIDE TIL BREVSKRIVNING GUIDE TIL BREVSKRIVNING APPELBREVE Formålet med at skrive et appelbrev er at få modtageren til at overholde menneskerettighederne. Det er en god idé at lægge vægt på modtagerens forpligtelser over for

Læs mere

Shooting tethered med Canon EOS-D i Capture One Pro. Shooting tethered i Capture One Pro 6.4 & 7.0 på MAC OS-X 10.7.5 & 10.8

Shooting tethered med Canon EOS-D i Capture One Pro. Shooting tethered i Capture One Pro 6.4 & 7.0 på MAC OS-X 10.7.5 & 10.8 Shooting tethered med Canon EOS-D i Capture One Pro Shooting tethered i Capture One Pro 6.4 & 7.0 på MAC OS-X 10.7.5 & 10.8 For Canon EOS-D ejere der fotograferer Shooting tethered med EOS-Utility eller

Læs mere

Citation for published version (APA): Byrge, C., & Hansen, S. (2009). Den Kreative Platform Spillet [2D/3D (Fysisk produkt)].

Citation for published version (APA): Byrge, C., & Hansen, S. (2009). Den Kreative Platform Spillet [2D/3D (Fysisk produkt)]. Aalborg Universitet Den Kreative Platform Spillet Sørensen, Christian Malmkjær Byrge; Hansen, Søren Publication date: 2009 Document Version Tidlig version også kaldet pre-print Link to publication from

Læs mere

Hvor er mine runde hjørner?

Hvor er mine runde hjørner? Hvor er mine runde hjørner? Ofte møder vi fortvivlelse blandt kunder, når de ser deres nye flotte site i deres browser og indser, at det ser anderledes ud, i forhold til det design, de godkendte i starten

Læs mere

Syddansk Universitet. Notat om Diabetes i Danmark Juel, Knud. Publication date: 2007. Document Version Også kaldet Forlagets PDF. Link to publication

Syddansk Universitet. Notat om Diabetes i Danmark Juel, Knud. Publication date: 2007. Document Version Også kaldet Forlagets PDF. Link to publication Syddansk Universitet Notat om Diabetes i Danmark Juel, Knud Publication date: 27 Document Version Også kaldet Forlagets PDF Link to publication Citation for pulished version (APA): Juel, K., (27). Notat

Læs mere

Aalborg Universitet. NOTAT - Projekt Cykeljakken Lahrmann, Harry Spaabæk; Madsen, Jens Christian Overgaard. Publication date: 2014

Aalborg Universitet. NOTAT - Projekt Cykeljakken Lahrmann, Harry Spaabæk; Madsen, Jens Christian Overgaard. Publication date: 2014 Aalborg Universitet NOTAT - Projekt Cykeljakken Lahrmann, Harry Spaabæk; Madsen, Jens Christian Overgaard Publication date: 2014 Document Version Også kaldet Forlagets PDF Link to publication from Aalborg

Læs mere

Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/11-2012

Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/11-2012 Server side Programming Wedesign Forelæsning #8 Recap PHP 1. Development Concept Design Coding Testing 2. Social Media Sharing, Images, Videos, Location etc Integrates with your websites 3. Widgets extend

Læs mere

Webshop integration for DanDomain

Webshop integration for DanDomain Microsoft Development Center Copenhagen, December 2009 Factsheet F Microsoft Dynamics C5 2010 Webshop integration for DanDomain Indholdsfortegnelse Indledning... 3 Eksport af varer til webshoppen... 4

Læs mere

GUIDE TIL OPRETTELSE AF SIDER OG INDHOLD I UMBRACO ONLINE BETJENING

GUIDE TIL OPRETTELSE AF SIDER OG INDHOLD I UMBRACO ONLINE BETJENING GUIDE TIL OPRETTELSE AF SIDER OG INDHOLD I UMBRACO ONLINE BETJENING DANSKE BEDEMÆND august 2014 v1.4 1 P a g e INDHOLDSFORTEGNELSE Adgang... 3 Overordnet om Umbraco... 4 Højreklik muligheder i oversigten...

Læs mere

Aktivering af Survey funktionalitet

Aktivering af Survey funktionalitet Surveys i REDCap REDCap gør det muligt at eksponere ét eller flere instrumenter som et survey (spørgeskema) som derefter kan udfyldes direkte af patienten eller forsøgspersonen over internettet. Dette

Læs mere

Microsoft Dynamics C5. Nyheder Kreditorbetalinger

Microsoft Dynamics C5. Nyheder Kreditorbetalinger Microsoft Dynamics C5 Nyheder Kreditorbetalinger INDHOLDSFORTEGNELSE Indledning... 3 Uddybning af ændringer... 4 Forbedring vedr. betalings-id er... 4 Ændringer i betalingsmåder (kreditorbetalinger)...

Læs mere

Android 2.x CodeJam. Android CodeJam 2.x Copyright Lund & Bendsen A/S

Android 2.x CodeJam. Android CodeJam 2.x Copyright Lund & Bendsen A/S Velkommen Android 2.x CodeJam 1 Om oplægsholderen Jacob Nordfalk nordfalk@lundogbendsen.dk Instruktør for Lund&Bendsen Ekstern lektor på IHK Underviser i Java SE, Java EE, Webserverprogrammering, OOAD,

Læs mere

Uforudsete forsinkelser i vej- og banetrafikken - Værdisætning

Uforudsete forsinkelser i vej- og banetrafikken - Værdisætning Downloaded from orbit.dtu.dk on: Dec 17, 2015 - Værdisætning Hjorth, Katrine Publication date: 2012 Link to publication Citation (APA): Hjorth, K. (2012). - Værdisætning [Lyd og/eller billed produktion

Læs mere

Aktiv lytning - som kompetence hos ph.d.-vejledere

Aktiv lytning - som kompetence hos ph.d.-vejledere Downloaded from orbit.dtu.dk on: Oct 09, 2016 Aktiv lytning - som kompetence hos ph.d.-vejledere Godskesen, Mirjam Irene; Wichmann-Hansen, Gitte Publication date: 2012 Document Version Også kaldet Forlagets

Læs mere

Engelsk. Niveau D. De Merkantile Erhvervsuddannelser September Casebaseret eksamen. og

Engelsk. Niveau D. De Merkantile Erhvervsuddannelser September Casebaseret eksamen.  og 052431_EngelskD 08/09/05 13:29 Side 1 De Merkantile Erhvervsuddannelser September 2005 Side 1 af 4 sider Casebaseret eksamen Engelsk Niveau D www.jysk.dk og www.jysk.com Indhold: Opgave 1 Presentation

Læs mere

Danskernes Rejser. Christensen, Linda. Publication date: 2011. Link to publication

Danskernes Rejser. Christensen, Linda. Publication date: 2011. Link to publication Downloaded from orbit.dtu.dk on: Jan 07, 2016 Danskernes Rejser Christensen, Linda Publication date: 2011 Link to publication Citation (APA): Christensen, L. (2011). Danskernes Rejser Technical University

Læs mere

Forside til eksamensprojekt

Forside til eksamensprojekt Forside til eksamensprojekt OOPA/MGA- T-401 Sæt X i rubrikken under dit fag: Underviser: Jacob Nordfalk Eksamensform: Eksamensform kan ej vælges - er udelukkende individuel eksamen Enmandsprojekt: Gruppeprojekt

Læs mere

Microsoft Dynamics C5. Nyheder i 2012 Hotfix 001 Version 4.4.00.001

Microsoft Dynamics C5. Nyheder i 2012 Hotfix 001 Version 4.4.00.001 Microsoft Dynamics C5 Nyheder i 2012 Hotfix 001 Version 4.4.00.001 INDHOLDSFORTEGNELSE Anvendelse af aktionslister... 3 Kopiering af aktionslister... 4 Aktionsliste oversigt... 4 XML Udbakke... 5 Microsoft

Læs mere

% &$ # '$ ## () %! #! & # &, # / # 0&. ) 123 45 / & #& #

% &$ # '$ ## () %! #! & # &, # / # 0&. ) 123 45 / & #& # !"$!!"$ % &$ '$ () %! %"!" & * function &+! & &, --.& / 0&. ) 123 45 / & & & 6 Sub CalcVecProduct() * &3.5 & 2 &6 / 7$ & & & "%&$&"! 2 " $ " 8 $ & $/ $ $" 9&6 Sub test() streng_y = "det her går " streng_y

Læs mere

Danish Language Course for Foreign University Students Copenhagen, 13 July 2 August 2016 Advanced, medium and beginner s level.

Danish Language Course for Foreign University Students Copenhagen, 13 July 2 August 2016 Advanced, medium and beginner s level. Danish Language Course for Foreign University Students Copenhagen, 13 July 2 August 2016 Advanced, medium and beginner s level Application form Must be completed on the computer in Danish or English All

Læs mere

Installation af Oracle 10g Release 2 database

Installation af Oracle 10g Release 2 database Installation af Oracle 10g Release 2 database Oracle 10g database indeholder databasesoftware, enterprise manager, SQL*Plus m.m., HTML DB (i dag kendt som Application Express) og tilhørende HTTP Server

Læs mere

Struktur for samkøring af Family Tables og Top Down Design under brug af Wildfire 5.0/Creo 1.0

Struktur for samkøring af Family Tables og Top Down Design under brug af Wildfire 5.0/Creo 1.0 Downloaded from orbit.dtu.dk on: Jan 10, 2017 Struktur for samkøring af Family Tables og Top Down Design under brug af Wildfire 5.0/Creo 1.0 Christensen, Georg Kronborg Publication date: 2012 Document

Læs mere

Umiddelbare kommentarer til Erhvervsministerens redegørelse vedr. CIBOR 27/9-2012 Krull, Lars

Umiddelbare kommentarer til Erhvervsministerens redegørelse vedr. CIBOR 27/9-2012 Krull, Lars Aalborg Universitet Umiddelbare kommentarer til Erhvervsministerens redegørelse vedr. CIBOR 27/9-2012 Krull, Lars Publication date: 2012 Document Version Pre-print (ofte en tidlig version) Link to publication

Læs mere

Opsætning af Backup. Hvis programmet registreres korrekt vises nedenstående skærmbillede. Genstart herefter programmet.

Opsætning af Backup. Hvis programmet registreres korrekt vises nedenstående skærmbillede. Genstart herefter programmet. Opsætning af Backup Dette er en guide til opsætning af backup med Octopus File Synchronizer. Det første der skal ske er, at programmet skal registreres (programmet kan dog bruges i 30 dage, hvis det ikke

Læs mere

Appendix 1: Interview guide Maria og Kristian Lundgaard-Karlshøj, Ausumgaard

Appendix 1: Interview guide Maria og Kristian Lundgaard-Karlshøj, Ausumgaard Appendix 1: Interview guide Maria og Kristian Lundgaard-Karlshøj, Ausumgaard Fortæl om Ausumgaard s historie Der er hele tiden snak om værdier, men hvad er det for nogle værdier? uddyb forklar definer

Læs mere

Citation for pulished version (APA): Terp, L. B. (2009). Didaktiske redskaber i idrætsundervisningen: et inspirationsmateriale til teori og praksis.

Citation for pulished version (APA): Terp, L. B. (2009). Didaktiske redskaber i idrætsundervisningen: et inspirationsmateriale til teori og praksis. University Colleges Didaktiske redskaber i idrætsundervisningen Terp, Lene Bjerning Publication date: 2009 Document Version Tidlig version også kaldet pre-print Link to publication Citation for pulished

Læs mere

JOHN LENNON (DANISH EDITION) BY CYNTHIA LENNON

JOHN LENNON (DANISH EDITION) BY CYNTHIA LENNON JOHN LENNON (DANISH EDITION) BY CYNTHIA LENNON READ ONLINE AND DOWNLOAD EBOOK : JOHN LENNON (DANISH EDITION) BY CYNTHIA LENNON Click button to download this ebook READ ONLINE AND DOWNLOAD JOHN LENNON (DANISH

Læs mere

TimeStamper Guide til fejlretning

TimeStamper Guide til fejlretning TimeStamper Guide til fejlretning for version 2.01 Copyright 2002-2013 www.timestamper.dk LICENSVEJLEDNING ver A09.doc ANSVARSFRASKRIVELSE: I ingen tilfælde skal udvikleren og/eller dets respektive leverandører

Læs mere

Fisk en sjælden gæst blandt børn og unge

Fisk en sjælden gæst blandt børn og unge Downloaded from orbit.dtu.dk on: Jan 8, 6 Fisk en sjælden gæst blandt børn og unge Fagt, Sisse Publication date: 8 Document Version Forlagets endelige version (ofte forlagets pdf) Link to publication Citation

Læs mere

Engelsk. Niveau C. De Merkantile Erhvervsuddannelser September 2005. Casebaseret eksamen. www.jysk.dk og www.jysk.com.

Engelsk. Niveau C. De Merkantile Erhvervsuddannelser September 2005. Casebaseret eksamen. www.jysk.dk og www.jysk.com. 052430_EngelskC 08/09/05 13:29 Side 1 De Merkantile Erhvervsuddannelser September 2005 Side 1 af 4 sider Casebaseret eksamen Engelsk Niveau C www.jysk.dk og www.jysk.com Indhold: Opgave 1 Presentation

Læs mere

BUDI-2S-T-06LxES-DK02

BUDI-2S-T-06LxES-DK02 BUDI-2S-T-06LxES-DK02 I N S T A L L A T I O N S V E J L E D N I N G BUDI-2S-T Udarbejdet i samarbejde med TDC 1 Generelt 3 Klargøring af boks BUDI-2S-T (splidse/patch) boks er beregnet til terminering

Læs mere

Sådan opretter du en elektronisk aflevering

Sådan opretter du en elektronisk aflevering Sådan arbejder du med opgaver i Gradebook/karakterbog Denne vejledning indeholder en detaljeret beskrivelse af hvordan du bruger gradebook/karakterbogen når du vil arbejde med opgaver og give karakterer

Læs mere

VARIO D1. Samlet pris kr. XXXX,-

VARIO D1. Samlet pris kr. XXXX,- Forside INDHOLD! NYHED! 1 sæt vario d1 6 modul monteret med 6 stk. fotoprint, format 70 x 100 cm. 3 stk. halogenspot, 200W 2 stk. brochureholder VARIO D1 5 sk. Vario d2 rammer, format 70 x 100 cm. Monteret

Læs mere

Administration af praktisk laboratorium

Administration af praktisk laboratorium Første gang udgivet: 20. august 2015 Brug WebEx Praktisk laboratorium administration til at opsætte og opretholde laboratorier og computere til Praktisk laboratorie-sessioner. Med administration af Praktisk

Læs mere

Userguide. NN Markedsdata. for. Microsoft Dynamics CRM 2011. v. 1.0

Userguide. NN Markedsdata. for. Microsoft Dynamics CRM 2011. v. 1.0 Userguide NN Markedsdata for Microsoft Dynamics CRM 2011 v. 1.0 NN Markedsdata www. Introduction Navne & Numre Web Services for Microsoft Dynamics CRM hereafter termed NN-DynCRM enable integration to Microsoft

Læs mere

Factsheet. Microsoft Dynamics C5 Version 2008. eindkomst

Factsheet. Microsoft Dynamics C5 Version 2008. eindkomst Factsheet Microsoft Dynamics C5 Version 2008 eindkomst Indholdsfortegnelse Indledning... 3 Opsætning inden ibrugtagning... 3 Dan fil til eindkomst... 4 2 FACTSHEET EINDKOMST FOR MICROSOFT DYNAMICS C5 VERSION

Læs mere

Adobe Acrobat Connect brugergrænsefladen

Adobe Acrobat Connect brugergrænsefladen Adobe Acrobat Connect brugergrænsefladen Adobe Connect er et webbaseret videokonferenceværktøj, der giver mulighed for online, synkron kommunikation, deling af filer, skærm og whiteboard, gennemførelse

Læs mere

Nyhedsbrev løn. Microsoft Dynamics C5 2012 Service pack 1 Hotfix 5 & 2010 Service pack 2 Hotfix 3. Ferie 2014

Nyhedsbrev løn. Microsoft Dynamics C5 2012 Service pack 1 Hotfix 5 & 2010 Service pack 2 Hotfix 3. Ferie 2014 Microsoft Dynamics C5 2012 Service pack 1 Hotfix 5 & 2010 Service pack 2 Hotfix 3 Ferie 2014 Marts 2014 Contents Overførsel af ferieoplysninger pr. 01/05-2014 3 Overførsel af feriepenge på fratrådte funktionærer

Læs mere

Microsoft Dynamics C5 2012 Service pack 2. Vejledning i forbindelse med ændring af Momsloven pr. 1.7.2014

Microsoft Dynamics C5 2012 Service pack 2. Vejledning i forbindelse med ændring af Momsloven pr. 1.7.2014 Vejledning i forbindelse med ændring af Momsloven pr. 1.7.2014 Microsoft Dynamics C5 2012 Service pack 2 Juni 2014 Indholdsfortegnelse Introduktion 3 Opsætning i C5 3 Som sælger: 3 Som køber: 6 OIOUBL

Læs mere

Microsoft Dynamics C5. Privat hotfix vedr. Timer indberettet i felt 200

Microsoft Dynamics C5. Privat hotfix vedr. Timer indberettet i felt 200 Microsoft Dynamics C5 Privat hotfix vedr. Timer indberettet i felt 200 INDHOLDSFORTEGNELSE En forløbelig afklaring... 3 Tilpasning af lønopsætningen... 3 Rettelser til kommafil... 3 Backup af lønopsætningen...

Læs mere

QUICK START Updated: 18. Febr. 2014

QUICK START Updated: 18. Febr. 2014 QUICK START Updated: 18. Febr. 2014 For at komme hurtigt og godt igang med dine nye Webstech produkter, anbefales at du downloader den senest opdaterede QuickStart fra vores hjemmeside: In order to get

Læs mere

Google App Engine. Google App Engine som platform. Claus Myglegaard Vagner og Jacob von Eyben

Google App Engine. Google App Engine som platform. Claus Myglegaard Vagner og Jacob von Eyben GoogleAppEngine GoogleAppEnginesomplatform ClausMyglegaardVagnerogJacobvonEyben Abstract CloudcomputingerenteknologidervinderfremidengenerelleITinfrastruktur. SocialemediersåsomLinkedIn,TwitterogFacebookharøgetbehovetfor

Læs mere

WT-1011RC Programmer User Guide

WT-1011RC Programmer User Guide WT-1011RC Programmer User Guide Firmware Version 1.9 Note: 1. Information in this manual is subject to change without notice and does not represent a commitment of manufacturer. 2. Manufacturer shall not

Læs mere

Om teknologi, faglighed og mod - og lidt om at bage boller Geyti, Anna-Maj Stride; Larsen, Stina Meyer; Syse, Mette Damkjær

Om teknologi, faglighed og mod - og lidt om at bage boller Geyti, Anna-Maj Stride; Larsen, Stina Meyer; Syse, Mette Damkjær University Colleges Om teknologi, faglighed og mod - og lidt om at bage boller Geyti, Anna-Maj Stride; Larsen, Stina Meyer; Syse, Mette Damkjær Publication date: 2013 Document Version Tidlig version også

Læs mere

Web Admin 5.5. Brugsvejledning for Domain admin. Copyright 2003 Gullestrup.net

Web Admin 5.5. Brugsvejledning for Domain admin. Copyright 2003 Gullestrup.net Web Admin 5.5 Copyright 2003 Gullestrup.net Log ind på systemet Start med at gå ind på http://mailadmin.gullestrup.net i din browser. Indtast din Email Adresse samt Password, som du tidligere har modtaget

Læs mere

University Colleges. Inkluderende pædagogik i praksis Brinck, Marieke Natasja. Published in: Tidsskrift for Socialpædagogik. Publication date: 2014

University Colleges. Inkluderende pædagogik i praksis Brinck, Marieke Natasja. Published in: Tidsskrift for Socialpædagogik. Publication date: 2014 University Colleges Inkluderende pædagogik i praksis Brinck, Marieke Natasja Published in: Tidsskrift for Socialpædagogik Publication date: 2014 Document Version Tidlig version også kaldet pre-print Link

Læs mere

Databaseadgang fra Java

Databaseadgang fra Java Databaseadgang fra Java Grundlæggende Programmering med Projekt Peter Sestoft Fredag 2007-11-23 Relationsdatabasesystemer Der er mange databaseservere Microsoft Access del af Microsoft Office MySQL god,

Læs mere

IPTV Box (MAG250/254) Bruger Manual

IPTV Box (MAG250/254) Bruger Manual IPTV Box (MAG250/254) Bruger Manual Når din STB (Set top Box) starter op, bliver der vist en pop up boks på skærmen, hvor du kan åbne EPG ved at trykke på F2 (Nogle bokse kan fortælle at den har brug for

Læs mere

Fang Prikkerne. Introduktion. Scratch

Fang Prikkerne. Introduktion. Scratch Scratch 2 Fang Prikkerne All Code Clubs must be registered. Registered clubs appear on the map at codeclubworld.org - if your club is not on the map then visit jumpto.cc/ccwreg to register your club. Introduktion

Læs mere

Opbygning af en fleksibel CAD mode for CFD beregninger på DTU's Økobil

Opbygning af en fleksibel CAD mode for CFD beregninger på DTU's Økobil Downloaded from orbit.dtu.dk on: May 29, 2016 Opbygning af en fleksibel CAD mode for CFD beregninger på DTU's Økobil Christensen, Georg Kronborg Publication date: 2016 Document Version Også kaldet Forlagets

Læs mere

SEPA Direct Debit. Mandat Vejledning 2013.03.15. Nets Lautrupbjerg 10 DK-2750 Ballerup

SEPA Direct Debit. Mandat Vejledning 2013.03.15. Nets Lautrupbjerg 10 DK-2750 Ballerup SEPA Direct Debit Mandat Vejledning 2013.03.15 Nets Lautrupbjerg 10 DK-2750 Ballerup Indholdsfortegnelse 1. Indledning... 3 1.1 Tilknyttet dokumentation... 3 1.2 Kontakt til Nets... 3 2. Krav til SEPA

Læs mere

Video obligatorisk øvelse

Video obligatorisk øvelse Video obligatorisk øvelse Denne obligatoriske øvelse går ud på at bearbejde en video og lægge den ud på jeres hjemmeside. Arbejdet med videoen laves i Windows Movie Maker, der findes i start-menuen under

Læs mere

The EAL Jobportal. How to get started

The EAL Jobportal. How to get started The EAL Jobportal How to get started Be prepared Before you start You need to know the ID of your Uni login (WAYF login) You need a browser like Firefox, Safari, Google Chrome (or IE 9 or higher) You need

Læs mere

Cadence OrCAD Capture CIS

Cadence OrCAD Capture CIS Forbedrede funktioner i CIS explorer 16.6 Med opdateringerne til OrCAD Capture CIS 16.6 er der sat en endnu tykkere streg under styrken ved at anvende en CIS løsning. Der er nu funktioner der ud fra brugerdefinerede

Læs mere

Inden du går i gang. For Mozilla Firefox brugere. For Internet Explorer brugere

Inden du går i gang. For Mozilla Firefox brugere. For Internet Explorer brugere Side 1 af 8 Inden du går i gang For at kunne bruge Alm. Brand Netbank skal du enten bruge Internet Explorer eller Mozilla Firefox. Vi understøtter ikke brug af Google Chrome, og vi kan derfor ikke garantere,

Læs mere

Ormebekæmpelse i vandværksfiltre

Ormebekæmpelse i vandværksfiltre Downloaded from orbit.dtu.dk on: Jan 03, 2016 Ormebekæmpelse i vandværksfiltre Christensen, Sarah Christine Boesgaard; Boe-Hansen, Rasmus; Albrechtsen, Hans-Jørgen Publication date: 2015 Document Version

Læs mere

Relativ forekomst af fiskesamfund i en dansk fjord speciel fokus på sortmundet kutling (Neogobius melanostomus)

Relativ forekomst af fiskesamfund i en dansk fjord speciel fokus på sortmundet kutling (Neogobius melanostomus) Downloaded from orbit.dtu.dk on: Jan 08, 2016 Relativ forekomst af fiskesamfund i en dansk fjord speciel fokus på sortmundet kutling (Neogobius melanostomus) Christoffersen, Mads Publication date: 2015

Læs mere

Videregående programmering i Java

Videregående programmering i Java Videregående programmering i Java Dag 6 Komponenter (og lidt Swing og MVC) Læsning: VP 4, evt. VP 6 Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html Grafiske komponenter

Læs mere

ATEX direktivet. Vedligeholdelse af ATEX certifikater mv. Steen Christensen stec@teknologisk.dk www.atexdirektivet.

ATEX direktivet. Vedligeholdelse af ATEX certifikater mv. Steen Christensen stec@teknologisk.dk www.atexdirektivet. ATEX direktivet Vedligeholdelse af ATEX certifikater mv. Steen Christensen stec@teknologisk.dk www.atexdirektivet.dk tlf: 7220 2693 Vedligeholdelse af Certifikater / tekniske dossier / overensstemmelseserklæringen.

Læs mere

Morten Juul Nielsen Produktchef Microsoft Danmark

Morten Juul Nielsen Produktchef Microsoft Danmark Morten Juul Nielsen Produktchef Microsoft Danmark Er du, din organisation og dit datacenter klar til Skyen? Dynamisk Datacenter & Cloud Computing System Center Suiten med fokus på Service Manager Next

Læs mere

Tillykke Med Fødselsdagen

Tillykke Med Fødselsdagen HTML & CSS 1 Tillykke Med Fødselsdagen All Code Clubs must be registered. Registered clubs appear on the map at codeclubworld.org - if your club is not on the map then visit jumpto.cc/ccwreg to register

Læs mere

Aalborg Universitet. Banker i Danmark pr. 22/3-2012 Krull, Lars. Publication date: 2012. Document Version Pre-print (ofte en tidlig version)

Aalborg Universitet. Banker i Danmark pr. 22/3-2012 Krull, Lars. Publication date: 2012. Document Version Pre-print (ofte en tidlig version) Aalborg Universitet Banker i Danmark pr. 22/3-2012 Krull, Lars Publication date: 2012 Document Version Pre-print (ofte en tidlig version) Link to publication from Aalborg University Citation for published

Læs mere

WIFI INTERNET ADAPTOR

WIFI INTERNET ADAPTOR WIFI INTERNET ADAPTOR Trådløs forbindelse fra inverter/gateway til router NETGEAR WNCE2001 DANSK QUICKSTART VEJLEDNING Indhold 1 Stikforbindelser... 3 2 Etablering af forbindelse til router... 3 2.1 Adapteren

Læs mere

Weebly- vejledning. Lav din egen hjemmeside let og smertefrit

Weebly- vejledning. Lav din egen hjemmeside let og smertefrit 1 Weebly- vejledning Lav din egen hjemmeside let og smertefrit 1. Gå ind på flg. adresse: www.weebly.com 2. Opret dig som bruger (gratis): 2 3. Kom godt i gang: For at komme i gang med 1. side skal du

Læs mere

De naturlige bestande af ørreder i danske ørredvandløb målt i forhold til ørredindekset DFFVø

De naturlige bestande af ørreder i danske ørredvandløb målt i forhold til ørredindekset DFFVø Downloaded from orbit.dtu.dk on: Sep 04, 2016 De naturlige bestande af ørreder i danske ørredvandløb målt i forhold til ørredindekset DFFVø Nielsen, Jan; Koed, Anders; Baktoft, Henrik Publication date:

Læs mere

Ansøgningen vedrører udstedelse af

Ansøgningen vedrører udstedelse af Ansøgning om Aero-medical examiner Certificate Ansøgningen vedrører udstedelse af class 2, LAPL og CC rettigheder class 1 rettigheder (kræver to års erfaring som class 2 undersøger samt advanced flymedicinsk

Læs mere

Aalborg Universitet. Empty nesters madpræferencer på feriehusferie Baungaard, Gitte; Knudsen, Kirstine ; Kristensen, Anja. Publication date: 2011

Aalborg Universitet. Empty nesters madpræferencer på feriehusferie Baungaard, Gitte; Knudsen, Kirstine ; Kristensen, Anja. Publication date: 2011 Aalborg Universitet Empty nesters madpræferencer på feriehusferie Baungaard, Gitte; Knudsen, Kirstine ; Kristensen, Anja Publication date: 2011 Document Version Også kaldet Forlagets PDF Link to publication

Læs mere

Fritidslivet i bevægelse

Fritidslivet i bevægelse Downloaded from orbit.dtu.dk on: Feb 02, 2016 Fritidslivet i bevægelse Nielsen, Thomas Alexander Sick Published in: Byplan Publication date: 2011 Link to publication Citation (APA): Nielsen, T. A. S. (2011).

Læs mere

2013 SP1. Konfiguration af koncernindblik. Configuration Guide

2013 SP1. Konfiguration af koncernindblik. Configuration Guide 2013 SP1 Konfiguration af koncernindblik Configuration Guide Intellectual Property Rights This document is the property of ScanJour. The data contained herein, in whole or in part, may not be duplicated,

Læs mere

www.cfufilmogtv.dk Tema: Pets Fag: Engelsk Målgruppe: 4. klasse Titel: Me and my pet Vejledning Lærer

www.cfufilmogtv.dk Tema: Pets Fag: Engelsk Målgruppe: 4. klasse Titel: Me and my pet Vejledning Lærer Me and my pet My dogs SVTV2, 2011, 5 min. Tekstet på engelsk Me and my pet er en svenskproduceret undervisningsserie til engelsk for børn i 4. klasse, som foregår på engelsk, i engelsktalende lande og

Læs mere

DMX styring med USB-interface

DMX styring med USB-interface DMX styring med USB-interface Introduktion...2 DMX bibliotek...3 Programmering af kanaler...7 Sådan skabes et show/en lyssekvens...11 Introduktion DMX LightPlayer er en avanceret men meget brugervenlig

Læs mere

3 Tilføj printer "HP-GL/2 devices, ADI 4.3 - for Autodesk by HP" 5 Klik "Printer ikonet" - Print/Plot configuration

3 Tilføj printer HP-GL/2 devices, ADI 4.3 - for Autodesk by HP 5 Klik Printer ikonet - Print/Plot configuration Plot filer fra AutoCad 14. 1 Åben Autocad 14 2 Klik "Filer" og vælg "Printer setup" 3 Tilføj printer "HP-GL/2 devices, ADI 4.3 - for Autodesk by HP" 4 Klik "Ok" 5 Klik "Printer ikonet" - Print/Plot configuration

Læs mere