Simple web browser with bookmarks (iPad/iPhone/iPod touch)
Posted: Fri Jan 30, 2015 7:38 pm
Playing around with the browser command turned into a simple web browser. Uses JavaScript for some browser functions. Does forward,back,reload,stop,home page, enter url, quit. Has a basic bookmark manager allowing you to save/load your favorite bookmarks. Browser resizes with screen orientation. Set your homepage with the home$ variable (default is google).
Latest version works with iPad, iPhone and iPod touch. Can use previous versions bookmarks.ini file (wouldn't erase your saved bookmarks running this new version).
- Dav
EDIT: v1.08 - Added infobar at top showing connection status, time & battery level. Bookmark menu now drops down & rises out of sight (animated). Added current url display. You can select it's field and copy current url to clipboard. Redesigned layout a little.
ipad & ipod screenshots follow...
Latest version works with iPad, iPhone and iPod touch. Can use previous versions bookmarks.ini file (wouldn't erase your saved bookmarks running this new version).
- Dav
EDIT: v1.08 - Added infobar at top showing connection status, time & battery level. Bookmark menu now drops down & rises out of sight (animated). Added current url display. You can select it's field and copy current url to clipboard. Redesigned layout a little.
Code: Select all
'=========================================
'Simple web browser in smart BASIC - v1.08
'=========================================
'Works on ipad, iphone, ipod touch
'Coded by Dav, December/2015
'
'A simple web browser made in smart Basic.
'Uses javascript for browsing functions.
'Has a basic bookmark manager. Only loads
'one page at a time, but I'm working on a
'multitab version right now...
'
'NEW: Shows info bar at top: Connection
' status, Time, Battery level. The
' current url now shown below menu.
' You can select it to copy url.
' Bookmark menu now drops down and
' closes up out of sight (moving).
'
'NOTE: Bookmarks saved in file in current
' directory named: 'bookmarks.ini'
' Homepage is set to GOOGLE.COM, but
' you can change this by changing
' the home$ variable below...
home$="http://www.google.com" '<<< change
'detect users device
if lowstr$(device_type$())="ipad" then
dev=1
else
dev=0
end if
graphics
option base 1
set buttons custom
page "main" set
'init screen
graphics clear .4,.4,.4
set toolbar off
set browsers scaled 'allow zooming in/out
'get current screen width
curwidth= screen_width()
gosub drawinfobar
'load the homepage
url$=home$
gosub loadpage
draw color 0,0,0
fill color .9,.9,.9
'make buttons
if dev = 1 then
set buttons font size 36
button "back" text " "&chr$(9666)&" " at 10, 28
button "forward" text " "&chr$(9656)&" " at 70, 28
button "stop" text " "&chr$(9679)&" " at 130,28
button "reload" text " "&chr$(8634)&" " at 194,28
button "home" text " "&chr$(9751)&" " at 266,28
button "bookmarks" text "Bookmarks..." at 344,28
button "url" text "Url..." at 579,28
button "quit" text "Quit" at 676,28
else
set buttons font size 20
button "back" text chr$(9666) at 3, 28
button "forward" text chr$(9656) at 40, 28
button "stop" text chr$(9679) at 78,28
button "reload" text chr$(8634) at 113,28
button "home" text chr$(9751) at 153,28
button "bookmarks" text chr$(9873) at 195,28
button "url" text chr$(9166) at 235,28
button "quit" text "X" at 285,28
end if
'main loop...
do
if button_pressed("back") then
u$ = browser_text$("n", "window.history.go(-1)")
end if
if button_pressed("forward") then
u$ = browser_text$("n", "window.history.go(1)")
end if
if button_pressed("quit") then break
if button_pressed("home") then
url$=home$ ! gosub loadpage
end if
if button_pressed("url") then
gosub geturl
end if
if button_pressed("stop") then
u$ = browser_text$("n", "stop()")
end if
if button_pressed("reload") then
u$ = browser_text$("n", "location.reload(true)")
end if
if button_pressed("bookmarks") then
gosub bookmarks
end if
'if screen rotated...
if screen_width() <> curwidth then
curwidth = screen_width()
url$=browser_text$("n", "window.location.href")
gosub loadpage
gosub drawinfobar
end if
'update infobar and connection every 10 secs
if time()>10 then
refresh off
gosub drawinfobar
refresh on
time reset
end if
'check current url location every other second
'if it changes, update field to show the change
if odd(time()) then
title$=browser_text$("n", "window.location.href")
ft$=field_text$("url")
'if it's changed, show change in field
if title$ <> ft$ then
field "url" back color 1,1,1
field "url" font color 0,0,0
if dev=1 then
field "url" text title$ at 10,85 size screen_width()-20,24
else
field "url" text title$ at 5,65 size screen_width()-5,25
end if
end if
end if
until 0
set toolbar on
page bm$ hide
page "main" hide
text
end
'==========================================
' G O S U B S
'==========================================
'-------
loadpage:
'-------
field "url" back color 1,1,1
field "url" font color 0,0,0
if dev=1 then
browser "n" url url$ at 0,110 size screen_width(),screen_height() -110
title$=browser_text$("n", "window.location.href")
field "url" text title$ at 10,85 size screen_width()-20,24
else
browser "n" url url$ at 0,95 size screen_width(),screen_height() -95
title$=browser_text$("n", "window.location.href")
field "url" text title$ at 5,65 size screen_width()-5,25
end if
return
'----------
hidebuttons:
'----------
button "back" hide
button "forward" hide
button "stop" hide
button "reload" hide
button "home" hide
button "bookmarks" hide
button "url" hide
button "quit" hide
return
'----------
showbuttons:
'----------
button "back" show
button "forward" show
button "stop" show
button "reload" show
button "home" show
button "bookmarks" show
button "url" show
button "quit" show
return
'-----
geturl:
'-----
gosub hidebuttons
if dev=1 then
field "geturl" text "" at 0,0 size screen_width(), 60
else
field "geturl" text "" at 0,0 size screen_width(), 38
end if
field "geturl" set text "http://"
field "geturl" select
if dev=1 then
button "cancel" text "Cancel" at screen_width()-150,3
else
button "cancel" text "Cancel" at screen_width()-80,3
end if
do
if button_pressed("cancel") then goto skip
until field_changed("geturl") = 1
u2$ = field_text$("geturl")
if u2$ <> "" and u2$ <>"http://" then
u2$=ltrim$(u2$)
'make sure http:// given
if capstr$(left$(u2$,7))<> "HTTP://" then
u2$="http://"&u2$
end if
url$=u2$
gosub loadpage
end if
skip:
button "cancel" delete
field "geturl" delete
gosub showbuttons
return
'--------
bookmarks:
'--------
gosub loadbookmarks
sw=screen_width()
sh=screen_height()
'make bookmarks page
bm$ = "Bookmarks"
page bm$ set
page bm$ frame 0,0,sw-10,sh/2
page bm$ color .7,.7,.7,1
if dev=1 then
page bm$ at 5,-1000 '60
else
page bm$ at 5,-1000 '50
end if
button "bookmarks" hide
showbookmarks:
if dev=1 then
list bm$ text list$(1) at 4,4 size sw-18,sh/2-62
else
list bm$ text list$(1) at 4,4 size sw-18,sh/2-42
end if
list bm$ set text list$
if dev=1 then
button "close" text "Close" at sw- 130,sh/2-57
button "addpage" text "Add Current" at 5,sh/2-57
button "deletepage" text "Delete page" at 225,sh/2-57
button "deletepage" hide
button "loadpage" text "Load page" at 442,sh/2-57
button "loadpage" hide
else
button "close" text "Close" at sw- 85,sh/2-36
button "addpage" text "Add" at 5,sh/2-36
button "deletepage" text "Delete" at 65,sh/2-36
button "deletepage" hide
button "loadpage" text "Load" at 145,sh/2-36
button "loadpage" hide
end if
'only drop down menu first time
if bdown=0 then
for yy = -500 to 100 step 4
page bm$ at 5,yy
pause .001
next yy
bdown=1 'mark as down
end if
do
if list_selected(bm$) <> -1 and booknum > 0 then
button "deletepage" show
button "loadpage" show
if button_pressed("loadpage") then
pause .2 'delay to look like a click
url$=list$(list_selected(bm$))
'page "main" set
gosub showbuttons
for yy = 100 to -550 step -4
page bm$ at 5,yy
pause .001
next yy
gosub loadpage
goto bookdone
end if
if button_pressed("deletepage") then
list$(list_selected(bm$))=""
gosub deletebookmark
gosub savebookmarks
goto showbookmarks
end if
end if
if button_pressed("addpage") then
url$=browser_text$("n", "window.location.href")
if url$<>"" then
gosub addbookmark
gosub savebookmarks
goto showbookmarks
end if
end if
if screen_width() <> curwidth then
curwidth = screen_width()
url$=browser_text$("n", "window.location.href")
gosub drawinfobar
gosub loadpage
goto bookmarks
end if
until button_pressed("close")
'raise menu back up
for yy = 100 to -550 step -4
page bm$ at 5,yy
pause .001
next yy
bookdone:
page "main" set
gosub showbuttons
bdown=0
return
'------------
loadbookmarks:
'------------
if file_exists("bookmarks.ini") =0 then
makenew:
'make default list of bookmarks
booknum=5
DIM list$(booknum)
list$(1)="http://www.google.com"
list$(2)="http://www.qbasicnews.com/dav/"
list$(3)="http://www.yahoo.com"
list$(4)="http://kibernetik.pro"
list$(5)="http://www.bing.com"
gosub savebookmarks
else
file "bookmarks.ini" setpos 0
file "bookmarks.ini" readline a$
if a$ = "" then goto makenew
booknum = val(a$)
if booknum < 0 then goto makenew
if booknum = 0 then
dim list$(1)
else
dim list$(booknum)
for p = 1 to booknum
file "bookmarks.ini" readline a$
'if invalid entry for some reason
if a$ ="" then
'last booknum was last
bookmark = p -1
break
end if
list$(p) = a$
next p
end if
end if
return
'------------
savebookmarks:
'------------
'out with the old...
file "bookmarks.ini" delete
'in with the new...
if booknum = 0 then
file "bookmarks.ini" writeline str$(0)
else
file "bookmarks.ini" writeline str$(booknum)
for p = 1 to booknum
file "bookmarks.ini" writeline list$(p)
next p
end if
return
'-------------
deletebookmark:
'-------------
if booknum > 1 then
'temporary holder array
dim temp$(booknum)
bc=1
for h=1 to booknum
if list$(h) <>"" then
temp$(bc)=list$(h)
bc=bc+1
end if
next h
'remake list$()
booknum =bc -1
dim list$(booknum)
'copy temp$() to list$()
for p = 1 to booknum
list$(p)= temp$(p)
next p
else
booknum=0
end if
return
'----------
addbookmark:
'----------
booknum=booknum + 1
if booknum = 1 then
dim list$(1)
list$(1) = url$
else
'make temp array holder
dim temp$(booknum)
for p = 1 to booknum -1
temp$(p) = list$(p)
next p
temp$(booknum) = url$
'make new list$()
dim list$(booknum)
for p = 1 to booknum
list$(p) = temp$(p)
next p
end if
return
'----------
drawinfobar:
'----------
sw=screen_width()
fill color .7,.7,.7
fill rect 0,0 to sw,25
draw color .3,.3,.3
ampm$="AM" ! hr=current_hour()
min$=str$(current_minute())
if len(min$)=1 then min$="0"&min$
if hr>11 then ampm$="PM"
if hr>12 then hr=hr-12
if hr=0 then hr=12
tm$=str$(hr)&":"&min$&" "&m$
draw text tm$ at ((sw/2)-text_width(tm$)/2),4
if dev=1 then
bat$=str$(battery_level())&"%"
draw text bat$ at sw-text_width(bat$)-80,4
end if
draw rect sw-70,5 to sw-20,19
f=battery_level()/2
fill color .3,.3,.3
fill rect sw-70,5 to sw-70+f,19
fill rect sw-20, 9 to sw-17, 14
if system_ext_ip$() ="" then
fill color .7,.7,.7
fill rect 0,0 to 110,25
fill color .7,0,0
draw color .3,.3,.3
if dev=1 then
draw text "OFFLINE" at 25,3
else
draw text "OFF" at 25,3
end if
else
fill color .7,.7,.7
fill rect 0,0 to 110,25
fill color 0,.7,0
draw color .3,.3,.3
if dev=1 then
draw text "ONLINE" at 25,3
else
draw text "ON" at 25,3
end if
end if
fill circle 12,12 size 5,5
draw color 0,0,0
fill color .9,.9,.9
return