diff options
-rw-r--r-- | Documentation/mobile-manual.html.git (renamed from Documentation/mobile-manual.html) | 1583 | ||||
-rw-r--r-- | Documentation/mobile-manual.txt | 10 |
2 files changed, 792 insertions, 801 deletions
diff --git a/Documentation/mobile-manual.html b/Documentation/mobile-manual.html.git index 3758ff54b..451db0f8c 100644 --- a/Documentation/mobile-manual.html +++ b/Documentation/mobile-manual.html.git @@ -1,792 +1,791 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" - "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> -<head> -<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" /> -<meta name="generator" content="AsciiDoc 8.6.9" /> -<title></title> -<style type="text/css"> -/* - * compact_subsurface.css, a special style sheet for Subsurface, - * modified by Willem Ferguson and derived from: - * compact.css, version 1.3 by Alex Efros <powerman@powerman.name> - * Licence: Public Domain - * - * Usage: asciidoc -a theme=compact_subsurface ... - */ - -* { padding: 0; margin: 0; } -img { border: 0; } - -/*** Layout ***/ - -body { margin: 10px 20px; } -#header br { display: none; } -#revnumber { display: block; } -#toc { margin: 1em 0; } -.toclevel2 { margin-left: 1em; } -.toclevel3 { margin-left: 2em; } -#footer { margin-top: 2em; } - -#preamble .sectionbody, -h2, -h3, -h4, -h5 { margin: 1em 0 0 0; } - -.admonitionblock, -.listingblock, -.sidebarblock, -.exampleblock, -.tableblock, -.literalblock { margin: 1em 0; } -.admonitionblock td.icon { padding-right: 0.5em; } -.admonitionblock td.content { padding-left: 0.5em; } -.listingblock .content { padding: 0.5em; } -.sidebarblock > .content { padding: 0.5em; } -.exampleblock > .content { padding: 0 0.5em; } -.tableblock caption { padding: 0 0 0.5em 0; } -.tableblock thead th, -.tableblock tbody td, -.tableblock tfoot td { padding: 0 0.5em; } -.quoteblock { padding: 0 2.0em; } - -.paragraph { margin: 1em 0 0 0; } -.sidebarblock .paragraph:first-child, -.exampleblock .paragraph:first-child, -.admonitionblock .paragraph:first-child { margin: 0; } - - .ulist, .olist, .dlist, .hdlist, .qlist { margin: 1em 0; } -li .ulist, li .olist, li .dlist, li .hdlist, li .qlist, -dd .ulist, dd .olist, dd .dlist, dd .hdlist, dd .qlist { margin: 0; } -ul { margin-left: 1.5em; } -ol { margin-left: 2em; } -dd { margin-left: 3em; } -td.hdlist1 { padding-right: 1em; } - -/*** Fonts ***/ - -body { font-family: Verdana, sans-serif; } -#header { font-family: Arial, sans-serif; } -#header h1 { font-family: Arial, sans-serif; } -#footer { font-family: Georgia, serif; } -#email { font-size: 0.85em; } -#revnumber { font-size: 0.75em; } -#toc { font-size: 0.9em; } -#toctitle { font-weight: bold; } -#footer { font-size: 0.8em; } - -h2, h3, h4, h5, .title { font-family: Arial, sans-serif; } -h2 { font-size: 1.5em; } -.sectionbody { font-size: 0.85em; } -.sectionbody .sectionbody { font-size: inherit; } -h3 { font-size: 159%; } /* 1.35em */ -h4 { font-size: 141%; } /* 1.2em */ -h5 { font-size: 118%; } /* 1em */ -.title { font-size: 106%; /* 0.9em */ - font-weight: bold; - } - -tt, .monospaced { font-family: monospace; font-size: 106%; } /* 0.9em */ -dt, td.hdlist1, .qlist em { font-family: Times New Roman, serif; - font-size: 118%; /* 1em */ - font-style: italic; - } -.tableblock tfoot td { font-weight: bold; } - -/*** Colors and Backgrounds ***/ - -h1 { color: #527bbd; border-bottom: 2px solid silver; } -#footer { border-top: 2px solid silver; } - -h2 { color: #527bbd; border-bottom: 2px solid silver; } -h3 { color: #5D7EAE; border-bottom: 2px solid silver; } -h3 { display: inline-block; } -h4,h5 { color: #5D7EAE; } - -.admonitionblock td.content { border-left: 2px solid silver; } -.listingblock .content { background: #f4f4f4; border: 1px solid silver; border-left: 5px solid #e0e0e0; } -.sidebarblock > .content { background: #ffffee; border: 1px solid silver; border-left: 5px solid #e0e0e0; } -.exampleblock > .content { border-left: 2px solid silver; } -.quoteblock { border-left: 5px solid #e0e0e0; } -.tableblock table { - border-collapse: collapse; - border-width: 3px; - border-color: #527bbd; -} -.tableblock table[frame=hsides] { border-style: solid none; } -.tableblock table[frame=border] { border-style: solid; } -.tableblock table[frame=void] { border-style: none; } -.tableblock table[frame=vsides] { border-style: none solid; } -.tableblock table[rules=all] tbody tr *, -.tableblock table[rules=rows] tbody tr * { - border-top: 1px solid #527bbd; -} -.tableblock table[rules=all] tr *, -.tableblock table[rules=cols] tr * { - border-left: 1px solid #527bbd; -} -.tableblock table tbody tr:first-child * { - border-top: 1px solid white; /* none don't work here... %-[] */ -} -.tableblock table tr *:first-child { - border-left: none; -} -.tableblock table[frame] thead tr *, -.tableblock table[frame] thead tr * { - border-top: 1px solid white; - border-bottom: 2px solid #527bbd; -} -.tableblock table tr td p.table, -.tableblock table tr td p.table * { - border: 0px; -} - -tt, .monospaced { color: navy; } - -li { color: #a0a0a0; } -li > * { color: black; } - -span.aqua { color: aqua; } -span.black { color: black; } -span.blue { color: blue; } -span.fuchsia { color: fuchsia; } -span.gray { color: gray; } -span.green { color: green; } -span.lime { color: lime; } -span.maroon { color: maroon; } -span.navy { color: navy; } -span.olive { color: olive; } -span.purple { color: purple; } -span.red { color: red; } -span.silver { color: silver; } -span.teal { color: teal; } -span.white { color: white; } -span.yellow { color: yellow; } - -span.aqua-background { background: aqua; } -span.black-background { background: black; } -span.blue-background { background: blue; } -span.fuchsia-background { background: fuchsia; } -span.gray-background { background: gray; } -span.green-background { background: green; } -span.lime-background { background: lime; } -span.maroon-background { background: maroon; } -span.navy-background { background: navy; } -span.olive-background { background: olive; } -span.purple-background { background: purple; } -span.red-background { background: red; } -span.silver-background { background: silver; } -span.teal-background { background: teal; } -span.white-background { background: white; } -span.yellow-background { background: yellow; } - -span.big { font-size: 2em; } -span.small { font-size: 0.6em; } - -span.underline { text-decoration: underline; } -span.overline { text-decoration: overline; } -span.line-through { text-decoration: line-through; } - -/*** Misc ***/ - -.admonitionblock td.icon { vertical-align: top; } -.attribution { text-align: right; } - -ul { list-style-type: disc; } -ol.arabic { list-style-type: decimal; } -ol.loweralpha { list-style-type: lower-alpha; } -ol.upperalpha { list-style-type: upper-alpha; } -ol.lowerroman { list-style-type: lower-roman; } -ol.upperroman { list-style-type: upper-roman; } -.hdlist td { vertical-align: top; } - - -</style> -<script type="text/javascript"> -/*<![CDATA[*/ -var asciidoc = { // Namespace. - -///////////////////////////////////////////////////////////////////// -// Table Of Contents generator -///////////////////////////////////////////////////////////////////// - -/* Author: Mihai Bazon, September 2002 - * http://students.infoiasi.ro/~mishoo - * - * Table Of Content generator - * Version: 0.4 - * - * Feel free to use this script under the terms of the GNU General Public - * License, as long as you do not remove or alter this notice. - */ - - /* modified by Troy D. Hanson, September 2006. License: GPL */ - /* modified by Stuart Rackham, 2006, 2009. License: GPL */ - -// toclevels = 1..4. -toc: function (toclevels) { - - function getText(el) { - var text = ""; - for (var i = el.firstChild; i != null; i = i.nextSibling) { - if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants. - text += i.data; - else if (i.firstChild != null) - text += getText(i); - } - return text; - } - - function TocEntry(el, text, toclevel) { - this.element = el; - this.text = text; - this.toclevel = toclevel; - } - - function tocEntries(el, toclevels) { - var result = new Array; - var re = new RegExp('[hH]([1-'+(toclevels+1)+'])'); - // Function that scans the DOM tree for header elements (the DOM2 - // nodeIterator API would be a better technique but not supported by all - // browsers). - var iterate = function (el) { - for (var i = el.firstChild; i != null; i = i.nextSibling) { - if (i.nodeType == 1 /* Node.ELEMENT_NODE */) { - var mo = re.exec(i.tagName); - if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") { - result[result.length] = new TocEntry(i, getText(i), mo[1]-1); - } - iterate(i); - } - } - } - iterate(el); - return result; - } - - var toc = document.getElementById("toc"); - if (!toc) { - return; - } - - // Delete existing TOC entries in case we're reloading the TOC. - var tocEntriesToRemove = []; - var i; - for (i = 0; i < toc.childNodes.length; i++) { - var entry = toc.childNodes[i]; - if (entry.nodeName.toLowerCase() == 'div' - && entry.getAttribute("class") - && entry.getAttribute("class").match(/^toclevel/)) - tocEntriesToRemove.push(entry); - } - for (i = 0; i < tocEntriesToRemove.length; i++) { - toc.removeChild(tocEntriesToRemove[i]); - } - - // Rebuild TOC entries. - var entries = tocEntries(document.getElementById("content"), toclevels); - for (var i = 0; i < entries.length; ++i) { - var entry = entries[i]; - if (entry.element.id == "") - entry.element.id = "_toc_" + i; - var a = document.createElement("a"); - a.href = "#" + entry.element.id; - a.appendChild(document.createTextNode(entry.text)); - var div = document.createElement("div"); - div.appendChild(a); - div.className = "toclevel" + entry.toclevel; - toc.appendChild(div); - } - if (entries.length == 0) - toc.parentNode.removeChild(toc); -}, - - -///////////////////////////////////////////////////////////////////// -// Footnotes generator -///////////////////////////////////////////////////////////////////// - -/* Based on footnote generation code from: - * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html - */ - -footnotes: function () { - // Delete existing footnote entries in case we're reloading the footnodes. - var i; - var noteholder = document.getElementById("footnotes"); - if (!noteholder) { - return; - } - var entriesToRemove = []; - for (i = 0; i < noteholder.childNodes.length; i++) { - var entry = noteholder.childNodes[i]; - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote") - entriesToRemove.push(entry); - } - for (i = 0; i < entriesToRemove.length; i++) { - noteholder.removeChild(entriesToRemove[i]); - } - - // Rebuild footnote entries. - var cont = document.getElementById("content"); - var spans = cont.getElementsByTagName("span"); - var refs = {}; - var n = 0; - for (i=0; i<spans.length; i++) { - if (spans[i].className == "footnote") { - n++; - var note = spans[i].getAttribute("data-note"); - if (!note) { - // Use [\s\S] in place of . so multi-line matches work. - // Because JavaScript has no s (dotall) regex flag. - note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1]; - spans[i].innerHTML = - "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n + - "' title='View footnote' class='footnote'>" + n + "</a>]"; - spans[i].setAttribute("data-note", note); - } - noteholder.innerHTML += - "<div class='footnote' id='_footnote_" + n + "'>" + - "<a href='#_footnoteref_" + n + "' title='Return to text'>" + - n + "</a>. " + note + "</div>"; - var id =spans[i].getAttribute("id"); - if (id != null) refs["#"+id] = n; - } - } - if (n == 0) - noteholder.parentNode.removeChild(noteholder); - else { - // Process footnoterefs. - for (i=0; i<spans.length; i++) { - if (spans[i].className == "footnoteref") { - var href = spans[i].getElementsByTagName("a")[0].getAttribute("href"); - href = href.match(/#.*/)[0]; // Because IE return full URL. - n = refs[href]; - spans[i].innerHTML = - "[<a href='#_footnote_" + n + - "' title='View footnote' class='footnote'>" + n + "</a>]"; - } - } - } -}, - -install: function(toclevels) { - var timerId; - - function reinstall() { - asciidoc.footnotes(); - if (toclevels) { - asciidoc.toc(toclevels); - } - } - - function reinstallAndRemoveTimer() { - clearInterval(timerId); - reinstall(); - } - - timerId = setInterval(reinstall, 500); - if (document.addEventListener) - document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false); - else - window.onload = reinstallAndRemoveTimer; -} - -} -asciidoc.install(3); -/*]]>*/ -</script> -</head> -<body class="article"> -<div id="header"> -</div> -<div id="content"> -<div class="imageblock" style="text-align:center;"> -<div class="content"> -<img src="mobile-images/banner.jpg" alt="Banner" /> -</div> -</div> -<div class="paragraph"><p><span class="big">Subsurface-mobile for Android: USER MANUAL</span></p></div> -<div class="paragraph"><p><strong>Manual author</strong>: Willem Ferguson</p></div> -<div id="toc"> - <div id="toctitle">Table of Contents</div> - <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript> -</div> -<div class="paragraph"><p><span class="blue"><em>Beta release, March 2016</em></span></p></div> -<div class="paragraph"><p>Welcome as a user of <em>Subsurface</em>, advanced dive logging software with -extensive infrastructure to describe, organize, interpret and print scuba -and free dives. <em>Subsurface</em> offers many advantages over other similar -software solutions, including compatibility with Windows, Mac-OS/X, Linux (many -distributions) and Android (iOS under development). In addition, <em>Subsurface</em> is -open-source software that allows downloading dive -information from most dive computers.</p></div> -<div class="sect1"> -<h2 id="_introducing_subsurface_mobile">1. Introducing Subsurface-mobile</h2> -<div class="sectionbody"> -<div class="paragraph"><p><em>Subsurface-mobile</em> is an extension of <em>Subsurface</em> on laptop and -tabletop computers. It runs on Android smartphone and tablet devices and is a -tool for viewing or sharing dive information at dive sites where a larger -computer is not useful. <em>Subsurface-mobile</em> also allows -the gathering of GPS locations where dives are performed.</p></div> -<div class="paragraph"><p>A version of <em>Subsurface-mobile</em> for iOS is under development but not yet -ready for testing.</p></div> -<div class="paragraph"><p>While <em>Subsurface-mobile</em> allows one to enter and save dive information -using an Android device, users of <em>Subsurface-mobile</em> typically use the -mobile app as an extension of the laptop/desktop version of <em>Subsurface</em>. -This allows the storage of dive logs on the Internet and which -can be shared by the Android version as well as the desktop version. -While the desktop version of <em>Subsurface</em> shows much more detailed information -for each dive, the mobile version allows one to have a more accessible dive log -on a dive trip, useful for proving dive experience to dive shops or to review -previous dives.</p></div> -<div class="paragraph"><p><em>Subsurface-mobile</em> allows one to:</p></div> -<div class="ulist"><ul> -<li> -<p> -Download existing dive log information from the Internet. -</p> -</li> -<li> -<p> -View this information on an Android device. -</p> -</li> -<li> -<p> -Edit many of the dive log data fields, e.g. divemaster, buddy, - equipment or notes about a dive. -</p> -</li> -<li> -<p> -Create and add new dive records to one’s dive log. -</p> -</li> -<li> -<p> -Store the updated dive log on the Internet. -</p> -</li> -<li> -<p> -Record, store and apply GPS positions of dives. -</p> -</li> -<li> -<p> -View the localities of recorded GPS positions and of dives - on a map. -</p> -</li> -</ul></div> -<div class="paragraph"><p>These items are discussed in greater detail in the following text. -What <em>Subsurface-mobile</em> does not support (at this time) is downloading -dive data directly from a dive computer. That still has to happen with -<em>Subsurface</em> on a desktop or laptop computer. We are investigating ways -to support downloading from a subset of the supported dive computers on -Android devices, but this is not yet ready for testing.</p></div> -</div> -</div> -<div class="sect1"> -<h2 id="_installing_em_subsurface_mobile_em_on_an_android_device">2. Installing <em>Subsurface-mobile</em> on an Android device</h2> -<div class="sectionbody"> -<div class="paragraph"><p>Find <em>Subsurface-mobile</em> in the <em>Google -Play Store</em>. Search for <em>Subsurface-mobile</em> and install it.</p></div> -</div> -</div> -<div class="sect1"> -<h2 id="_using_em_subsurface_mobile_em_for_the_first_time">3. Using <em>Subsurface-mobile</em> for the first time</h2> -<div class="sectionbody"> -<div class="paragraph"><p>Upon starting <em>Subsurface-mobile</em> for the first time, a Subsurface -splash screen is shown while the program loads. On some devices this -may take several seconds. After loading, the <em>Cloud Credentials screen</em> appears -(see image below).</p></div> -<div class="imageblock" style="text-align:center;"> -<div class="content"> -<img src="mobile-images/landingscreen.jpg" alt="FIGURE: Mobile landing screen" /> -</div> -</div> -<div class="paragraph"><p>Since <em>Subsurface</em> is largely dependent on a dive log saved on the Internet, -provide a user-ID and password for access to the <em>Subsurface Cloud</em>. These -credentials are obtained by opening the desktop version of <em>Subsurface</em> and -by clicking <em>File → Preferences → Network</em>, explained in detail in the -user manual for the <em>Subsurface</em> desktop version. Once the account has -been created and verified using the desktop version one can use <em>Subsurface-mobile</em>.</p></div> -<div class="paragraph"><p>When entering a password, it is possible to check -a checkbox that enables the text of the password to be shown. Checking the -check box labelled "Remember" allows <em>Susburface-mobile</em> to keep the -credentials for subsequent logins (see image above). -Having entered the credentials, tap the disk icon at the bottom of the screen. -<em>Subsurface-mobile</em> attempts to download the existing dive log from the_Subsurface_ cloud -server. Appropriate messages are shown onscreen. Finally -a list of dives are shown.</p></div> -</div> -</div> -<div class="sect1"> -<h2 id="_local_copy_of_the_dive_log_and_synchronisation_with_internet">4. Local copy of the dive log and synchronisation with Internet</h2> -<div class="sectionbody"> -<div class="paragraph"><p>Once the dive -list has been downloaded from the Internet, <em>Subsurface-mobile</em> keeps a local -copy on the mobile device. This means that, if there is no Internet connection -at a dive site, one can still access the local copy and view and manipulate -dive information. If there is Internet connectivity, <em>Subsurface-mobile</em> accesses -the Internet-based dive log to verify that the local copy is still the -same as the Internet-stored copy. If not, the local copy and the copy on -the server are synchronised.</p></div> -</div> -</div> -<div class="sect1"> -<h2 id="_a_few_remarks_about_the_user_interface">5. A Few Remarks About The User Interface</h2> -<div class="sectionbody"> -<div class="paragraph"><p>At the bottom of many Subsurface-mobile screens is a round button that provides for -several actions and which allows the selection of the main affirmative action -(see image above and image below). -On Android devices, use the Android Back -button for "cancel", "discard" or "back" actions. For example, when -editing dive information, tapping the action button saves the changes, the -Android back button can be used to cancel the edit without saving changes.</p></div> -<div class="imageblock" style="text-align:center;"> -<div class="content"> -<img src="mobile-images/actionbutton.jpg" alt="FIGURE: Action Button" /> -</div> -</div> -<div class="paragraph"><p>Instead of the more traditional "hamburger" menu button in the top left or -right corner of the screen to open menus, <em>Subsurface-mobile</em> uses a -different user interaction philosophy based on the Kirigami framework -developed by the Plasma developers. To open the main menu one has -three options:</p></div> -<div class="ulist"><ul> -<li> -<p> -Tap on the right-arrow symbol in the lower left corner of the screen - (easy to reach for hand held devices) -</p> -</li> -<li> -<p> -Swipe towards the right across the left edge of the screen -</p> -</li> -<li> -<p> -Drag the action button visible on most screens with the main action to - the right -</p> -</li> -</ul></div> -<div class="imageblock" style="text-align:center;"> -<div class="content"> -<img src="mobile-images/menu.jpg" alt="FIGURE: Dive management subpanel" /> -</div> -</div> -<div class="paragraph"><p>The images above indicate some of the important features of the menu system. -On the left is the main menu that is activated as described above. In the middle is -the menu that opens if one taps the <em>GPS</em> option on the main menu. On the right is -the menu that opens if one taps the <em>Manage Dives</em> option on the main menu.</p></div> -<div class="paragraph"><p>Similarly, the context menu (currently only available on the dive details screen) can be -opened one of these three ways:</p></div> -<div class="ulist"><ul> -<li> -<p> -Tap on the left-arrow symbol in the lower right corner of the screen -</p> -</li> -<li> -<p> -Swipe to the left across the right edge of the screen -</p> -</li> -<li> -<p> -Drag the action button to the left -</p> -</li> -</ul></div> -</div> -</div> -<div class="sect1"> -<h2 id="_viewing_the_dive_list">6. Viewing the Dive List</h2> -<div class="sectionbody"> -<div class="paragraph"><p>Most of the actions of <em>Subsurface-mobile</em> center around the dives on the -dive list. While the dive list is loading from the cloud, -a message appears at the bottom of the screen, indicating that the cloud is -being accessed (see image on left, below). Once the list is loaded one can scroll up and down. -Tapping a dive on the list brings up a display of <em>Details View</em> for that dive (see image on right below). -This includes the dive profile as well as additional information and notes.</p></div> -<div class="imageblock" style="text-align:center;"> -<div class="content"> -<img src="mobile-images/divelist.jpg" alt="FIGURE: Dive list screen" /> -</div> -</div> -<div class="paragraph"><p>One can view other dives by swiping the <em>Details view</em> to the right (for the -previous dive) or to the left (following dive).</p></div> -</div> -</div> -<div class="sect1"> -<h2 id="_editing_dive_details">7. Editing dive details.</h2> -<div class="sectionbody"> -<div class="paragraph"><p>At the bottom of the dive details screen the <em>Action Button</em> contains a pencil (image on right, above). -Tapping the button brings up a panel with edit boxes that allows one to -change the existing dive information, e.g. adding text to the dive notes -or changing the names or values of some of the information (see image below). -It may be necessary to scroll the window to access all the information. -At the bottom of the edit screen is a <em>Save</em> action button. Tap this to save -the new information. Having saved the data, the dive list screen is -updated and shown. To cancel any edits, tap the Android Back Button.</p></div> -<div class="imageblock" style="text-align:center;"> -<div class="content"> -<img src="mobile-images/editdive.jpg" alt="FIGURE: Dive edit screen" /> -</div> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_adding_a_new_dive_to_the_dive_list">8. Adding a new dive to the dive list</h2> -<div class="sectionbody"> -<div class="paragraph"><p>It is also possible to add an additional dive to the existing dive list. On the -main menu tap <em>Manage dives → Add dive manually</em>. This opens a screen that is -identical to the editing screen discussed above. When a dive is added manually, one -cannot directly add a dive profile from a dive computer. However, if one does not use a -dive computer, the duration, depth and several other bits of information about -the new dive can be entered. The <em>Action button</em> at the bottom of the screen -contains a disk symbol. Tap this to save the new dive. To cancel any edits, tap the Android Back Button. -The left-hand image below shows a screenshot of a dive being created and the right-hand image shows -the same dive in <em>Details View</em>.</p></div> -<div class="imageblock" style="text-align:center;"> -<div class="content"> -<img src="mobile-images/createdive.jpg" alt="FIGURE: Dive edit screen" /> -</div> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_deleting_a_dive">9. Deleting a dive</h2> -<div class="sectionbody"> -<div class="paragraph"><p>The <em>details view</em> of a dive has a context menu on the right-hand side that can be activated as described above -(e.g. by tapping the arrow icon at the bottom right of the screen or by dragging the <em>Action Button</em> to the left). -The context menu has a single item: "Delete dive". If this option is tapped, the dive shown in the <em>Details View</em> -is deleted. One has a brief opportunity to undo the delete by tapping the <em>undo</em> message that appears at the bottom of -the screen. If the <em>undo</em> message is not tapped, the dive is deleted.</p></div> -</div> -</div> -<div class="sect1"> -<h2 id="_dive_log_management">10. Dive log management</h2> -<div class="sectionbody"> -<div class="paragraph"><p>A central part of <em>Subsurface-mobile</em> is the ability to store the dive -log using the <em>Subsurface</em> cloud storage. -This provides security against loss or damage to the dive information caintained in a local copy of -the dive log and allows the desktop version of <em>Subsurface</em> to -access changes made using the mobile device. This ability is accessed -throug the main menu (by dragging the Action Button to the right, or -alternatively tap the right angle button at the bottom left of the screen). - Tap the option <em>Manage dives</em>, enabling a number of options:</p></div> -<div class="sect2"> -<h3 id="_add_new_dive_manually">10.1. Add new dive manually</h3> -<div class="paragraph"><p>This is described above under the section dealing with the dive list.</p></div> -</div> -<div class="sect2"> -<h3 id="_upload_dive_log_to_the_em_subsurface_em_cloud_storage">10.2. Upload dive log to the <em>Subsurface</em> cloud storage</h3> -<div class="paragraph"><p>One can upload the dives contained on the mobile device -to the <em>Subsurface</em> cloud storage by tapping the option <em>Upload to cloud</em>. -This synchronizes the local changes to -the dive log with the cloud storage.</p></div> -</div> -<div class="sect2"> -<h3 id="_download_dive_log_from_the_cloud_storage">10.3. Download dive log from the cloud storage</h3> -<div class="paragraph"><p>In the dive management subpanel, tap the option <em>Refresh</em>, causing -the local divelog to be refreshed from the cloud so that the cloud -and local versions are synchronised.</p></div> -</div> -<div class="sect2"> -<h3 id="_changing_the_login_credentials_on_the_em_subsurface_em_cloud">10.4. Changing the login credentials on the <em>Subsurface</em> cloud</h3> -<div class="paragraph"><p>It may be necessary to change one’s login credentials, for instance if one’s email -address (initially used as a credential) has changed. To change the credentials, -open the main menu and tap <em>Cloud credentials</em>. This opens the setup screen -for specifying new credentials.</p></div> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_recording_dive_locations_using_gps">11. Recording dive locations using GPS.</h2> -<div class="sectionbody"> -<div class="paragraph"><p>The fact that most smartphones have GPS facilities allows one to record -the locations of dives. One can take the smartphone on the dive boat -during a dive and locations will be automatically recorded at regular intervals. -These locations can then be applied to dives in the dive list. Here is how it’s done:</p></div> -<div class="sect2"> -<h3 id="_setting_up_the_gps">11.1. Setting up the GPS</h3> -<div class="paragraph"><p>Open the main menu and tap <em>GPS → Preferences</em>. Now specify the way -in which GPS data need to be automatically collected (image on right, below). One can specify that -data are collected at regular intervals, e.g. every 10 minutes, or at regular -distances, e.g. after the boat has moved more than 200m, or a combination of -both of the above approaches. Provide the appropriate information and -tap the <em>Save</em> action button. The program is now ready to collect GPS positions.</p></div> -<div class="imageblock" style="text-align:center;"> -<div class="content"> -<img src="mobile-images/gpssetup.jpg" alt="FIGURE: GPS setup screen" /> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_collecting_gps_positions">11.2. Collecting GPS positions</h3> -<div class="paragraph"><p>Ensure that the GPS on the Android device has been activated. At the bottom -of the GPS submenu is a check box <em>Run location service</em> (image on left, above). -Check this box -and <em>Subsurface-mobile</em> starts to collect GPS locations automatically, -following the preferences specified as described above. After -the dive one can deactivate the collection of GPS data by de-activating -the same check box at the bottom of the main menu.</p></div> -</div> -<div class="sect2"> -<h3 id="_storing_the_gps_data_on_the_em_subsurface_em_cloud">11.3. Storing the GPS data on the <em>Subsurface</em> cloud</h3> -<div class="paragraph"><p>Activate the main menu and select the <em>GPS</em> option that brings up the submenu of GPS-related actions -(image on left, above). Tap <em>Upload GPS data</em> that saves the GPS data -on the <em>Subsurface</em> cloud server. These GPS data are saved <strong>separately</strong> -from the other dive log data. All collected GPS data are kept on the -Android device, independent of whether they have been uploaded or not.</p></div> -</div> -<div class="sect2"> -<h3 id="_downloading_gps_data_from_the_em_subsurface_em_cloud">11.4. Downloading GPS data from the <em>Subsurface</em> cloud</h3> -<div class="paragraph"><p>Download the GPS data that have been saved on the cloud by -selecting <em>Download GPS Data</em> from the GPS subpanel.</p></div> -</div> -<div class="sect2"> -<h3 id="_viewing_gps_data">11.5. Viewing GPS data</h3> -<div class="paragraph"><p>From the GPS submenu (image on left, above) select <em>Show GPS fixes</em>. This brings -up a list of GPS positions obtained using the location service (image -on left, below). Two actions are possible for each of the locations, enabled if -one taps the handle (the three horisontal stripes on the right, see image on left, below) and -then drags the specific item to the left (image on right, below). This exposes two -options. Tapping the dustbin deletes this particular GPS location. Tapping the -teardrop-shaped icon (actually a Google Maps pin) opens up Google Maps with a pin -indicating the exact map position of the GPS record being viewed. The two above -options can be hidden by drawing the GPS record to the right, again using the handle.</p></div> -<div class="imageblock" style="text-align:center;"> -<div class="content"> -<img src="mobile-images/gpsmanagement.jpg" alt="FIGURE: GPS management" /> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_applying_gps_data_to_dives_in_the_dive_log">11.6. Applying GPS data to dives in the dive log</h3> -<div class="paragraph"><p>Assuming that all the dives have been entered into the dive log or have -been downloaded from the <em>Subsurface</em> cloud, one can apply the GPS positions to -these dives. GPS positions can therefore only be applied to dives in the dive list. -From the GPS subpanel, tap <em>Apply GPS fixes</em>. The dive list contains the start -and end times of each dive. Now, <em>Subsurface-mobile</em> applies the first -GPS position that falls within the dive period of each dive. This results -in a GPS position for each dive that is saved as part of the dive list.</p></div> -</div> -</div> -</div> -</div> -<div id="footnotes"><hr /></div> -<div id="footer"> -<div id="footer-text"> -Last updated - 2016-03-09 15:36:14 SAST -</div> -</div> -</body> -</html> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
+<meta name="generator" content="AsciiDoc 8.6.9" />
+<title></title>
+<style type="text/css">
+/*
+ * compact_subsurface.css, a special style sheet for Subsurface,
+ * modified by Willem Ferguson and derived from:
+ * compact.css, version 1.3 by Alex Efros <powerman@powerman.name>
+ * Licence: Public Domain
+ *
+ * Usage: asciidoc -a theme=compact_subsurface ...
+ */
+
+* { padding: 0; margin: 0; }
+img { border: 0; }
+
+/*** Layout ***/
+
+body { margin: 10px 20px; }
+#header br { display: none; }
+#revnumber { display: block; }
+#toc { margin: 1em 0; }
+.toclevel2 { margin-left: 1em; }
+.toclevel3 { margin-left: 2em; }
+#footer { margin-top: 2em; }
+
+#preamble .sectionbody,
+h2,
+h3,
+h4,
+h5 { margin: 1em 0 0 0; }
+
+.admonitionblock,
+.listingblock,
+.sidebarblock,
+.exampleblock,
+.tableblock,
+.literalblock { margin: 1em 0; }
+.admonitionblock td.icon { padding-right: 0.5em; }
+.admonitionblock td.content { padding-left: 0.5em; }
+.listingblock .content { padding: 0.5em; }
+.sidebarblock > .content { padding: 0.5em; }
+.exampleblock > .content { padding: 0 0.5em; }
+.tableblock caption { padding: 0 0 0.5em 0; }
+.tableblock thead th,
+.tableblock tbody td,
+.tableblock tfoot td { padding: 0 0.5em; }
+.quoteblock { padding: 0 2.0em; }
+
+.paragraph { margin: 1em 0 0 0; }
+.sidebarblock .paragraph:first-child,
+.exampleblock .paragraph:first-child,
+.admonitionblock .paragraph:first-child { margin: 0; }
+
+ .ulist, .olist, .dlist, .hdlist, .qlist { margin: 1em 0; }
+li .ulist, li .olist, li .dlist, li .hdlist, li .qlist,
+dd .ulist, dd .olist, dd .dlist, dd .hdlist, dd .qlist { margin: 0; }
+ul { margin-left: 1.5em; }
+ol { margin-left: 2em; }
+dd { margin-left: 3em; }
+td.hdlist1 { padding-right: 1em; }
+
+/*** Fonts ***/
+
+body { font-family: Verdana, sans-serif; }
+#header { font-family: Arial, sans-serif; }
+#header h1 { font-family: Arial, sans-serif; }
+#footer { font-family: Georgia, serif; }
+#email { font-size: 0.85em; }
+#revnumber { font-size: 0.75em; }
+#toc { font-size: 0.9em; }
+#toctitle { font-weight: bold; }
+#footer { font-size: 0.8em; }
+
+h2, h3, h4, h5, .title { font-family: Arial, sans-serif; }
+h2 { font-size: 1.5em; }
+.sectionbody { font-size: 0.85em; }
+.sectionbody .sectionbody { font-size: inherit; }
+h3 { font-size: 159%; } /* 1.35em */
+h4 { font-size: 141%; } /* 1.2em */
+h5 { font-size: 118%; } /* 1em */
+.title { font-size: 106%; /* 0.9em */
+ font-weight: bold;
+ }
+
+tt, .monospaced { font-family: monospace; font-size: 106%; } /* 0.9em */
+dt, td.hdlist1, .qlist em { font-family: Times New Roman, serif;
+ font-size: 118%; /* 1em */
+ font-style: italic;
+ }
+.tableblock tfoot td { font-weight: bold; }
+
+/*** Colors and Backgrounds ***/
+
+h1 { color: #527bbd; border-bottom: 2px solid silver; }
+#footer { border-top: 2px solid silver; }
+
+h2 { color: #527bbd; border-bottom: 2px solid silver; }
+h3 { color: #5D7EAE; border-bottom: 2px solid silver; }
+h3 { display: inline-block; }
+h4,h5 { color: #5D7EAE; }
+
+.admonitionblock td.content { border-left: 2px solid silver; }
+.listingblock .content { background: #f4f4f4; border: 1px solid silver; border-left: 5px solid #e0e0e0; }
+.sidebarblock > .content { background: #ffffee; border: 1px solid silver; border-left: 5px solid #e0e0e0; }
+.exampleblock > .content { border-left: 2px solid silver; }
+.quoteblock { border-left: 5px solid #e0e0e0; }
+.tableblock table {
+ border-collapse: collapse;
+ border-width: 3px;
+ border-color: #527bbd;
+}
+.tableblock table[frame=hsides] { border-style: solid none; }
+.tableblock table[frame=border] { border-style: solid; }
+.tableblock table[frame=void] { border-style: none; }
+.tableblock table[frame=vsides] { border-style: none solid; }
+.tableblock table[rules=all] tbody tr *,
+.tableblock table[rules=rows] tbody tr * {
+ border-top: 1px solid #527bbd;
+}
+.tableblock table[rules=all] tr *,
+.tableblock table[rules=cols] tr * {
+ border-left: 1px solid #527bbd;
+}
+.tableblock table tbody tr:first-child * {
+ border-top: 1px solid white; /* none don't work here... %-[] */
+}
+.tableblock table tr *:first-child {
+ border-left: none;
+}
+.tableblock table[frame] thead tr *,
+.tableblock table[frame] thead tr * {
+ border-top: 1px solid white;
+ border-bottom: 2px solid #527bbd;
+}
+.tableblock table tr td p.table,
+.tableblock table tr td p.table * {
+ border: 0px;
+}
+
+tt, .monospaced { color: navy; }
+
+li { color: #a0a0a0; }
+li > * { color: black; }
+
+span.aqua { color: aqua; }
+span.black { color: black; }
+span.blue { color: blue; }
+span.fuchsia { color: fuchsia; }
+span.gray { color: gray; }
+span.green { color: green; }
+span.lime { color: lime; }
+span.maroon { color: maroon; }
+span.navy { color: navy; }
+span.olive { color: olive; }
+span.purple { color: purple; }
+span.red { color: red; }
+span.silver { color: silver; }
+span.teal { color: teal; }
+span.white { color: white; }
+span.yellow { color: yellow; }
+
+span.aqua-background { background: aqua; }
+span.black-background { background: black; }
+span.blue-background { background: blue; }
+span.fuchsia-background { background: fuchsia; }
+span.gray-background { background: gray; }
+span.green-background { background: green; }
+span.lime-background { background: lime; }
+span.maroon-background { background: maroon; }
+span.navy-background { background: navy; }
+span.olive-background { background: olive; }
+span.purple-background { background: purple; }
+span.red-background { background: red; }
+span.silver-background { background: silver; }
+span.teal-background { background: teal; }
+span.white-background { background: white; }
+span.yellow-background { background: yellow; }
+
+span.big { font-size: 2em; }
+span.small { font-size: 0.6em; }
+
+span.underline { text-decoration: underline; }
+span.overline { text-decoration: overline; }
+span.line-through { text-decoration: line-through; }
+
+/*** Misc ***/
+
+.admonitionblock td.icon { vertical-align: top; }
+.attribution { text-align: right; }
+
+ul { list-style-type: disc; }
+ol.arabic { list-style-type: decimal; }
+ol.loweralpha { list-style-type: lower-alpha; }
+ol.upperalpha { list-style-type: upper-alpha; }
+ol.lowerroman { list-style-type: lower-roman; }
+ol.upperroman { list-style-type: upper-roman; }
+.hdlist td { vertical-align: top; }
+
+
+</style>
+<script type="text/javascript">
+/*<![CDATA[*/
+var asciidoc = { // Namespace.
+
+/////////////////////////////////////////////////////////////////////
+// Table Of Contents generator
+/////////////////////////////////////////////////////////////////////
+
+/* Author: Mihai Bazon, September 2002
+ * http://students.infoiasi.ro/~mishoo
+ *
+ * Table Of Content generator
+ * Version: 0.4
+ *
+ * Feel free to use this script under the terms of the GNU General Public
+ * License, as long as you do not remove or alter this notice.
+ */
+
+ /* modified by Troy D. Hanson, September 2006. License: GPL */
+ /* modified by Stuart Rackham, 2006, 2009. License: GPL */
+
+// toclevels = 1..4.
+toc: function (toclevels) {
+
+ function getText(el) {
+ var text = "";
+ for (var i = el.firstChild; i != null; i = i.nextSibling) {
+ if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
+ text += i.data;
+ else if (i.firstChild != null)
+ text += getText(i);
+ }
+ return text;
+ }
+
+ function TocEntry(el, text, toclevel) {
+ this.element = el;
+ this.text = text;
+ this.toclevel = toclevel;
+ }
+
+ function tocEntries(el, toclevels) {
+ var result = new Array;
+ var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
+ // Function that scans the DOM tree for header elements (the DOM2
+ // nodeIterator API would be a better technique but not supported by all
+ // browsers).
+ var iterate = function (el) {
+ for (var i = el.firstChild; i != null; i = i.nextSibling) {
+ if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
+ var mo = re.exec(i.tagName);
+ if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
+ result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
+ }
+ iterate(i);
+ }
+ }
+ }
+ iterate(el);
+ return result;
+ }
+
+ var toc = document.getElementById("toc");
+ if (!toc) {
+ return;
+ }
+
+ // Delete existing TOC entries in case we're reloading the TOC.
+ var tocEntriesToRemove = [];
+ var i;
+ for (i = 0; i < toc.childNodes.length; i++) {
+ var entry = toc.childNodes[i];
+ if (entry.nodeName.toLowerCase() == 'div'
+ && entry.getAttribute("class")
+ && entry.getAttribute("class").match(/^toclevel/))
+ tocEntriesToRemove.push(entry);
+ }
+ for (i = 0; i < tocEntriesToRemove.length; i++) {
+ toc.removeChild(tocEntriesToRemove[i]);
+ }
+
+ // Rebuild TOC entries.
+ var entries = tocEntries(document.getElementById("content"), toclevels);
+ for (var i = 0; i < entries.length; ++i) {
+ var entry = entries[i];
+ if (entry.element.id == "")
+ entry.element.id = "_toc_" + i;
+ var a = document.createElement("a");
+ a.href = "#" + entry.element.id;
+ a.appendChild(document.createTextNode(entry.text));
+ var div = document.createElement("div");
+ div.appendChild(a);
+ div.className = "toclevel" + entry.toclevel;
+ toc.appendChild(div);
+ }
+ if (entries.length == 0)
+ toc.parentNode.removeChild(toc);
+},
+
+
+/////////////////////////////////////////////////////////////////////
+// Footnotes generator
+/////////////////////////////////////////////////////////////////////
+
+/* Based on footnote generation code from:
+ * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
+ */
+
+footnotes: function () {
+ // Delete existing footnote entries in case we're reloading the footnodes.
+ var i;
+ var noteholder = document.getElementById("footnotes");
+ if (!noteholder) {
+ return;
+ }
+ var entriesToRemove = [];
+ for (i = 0; i < noteholder.childNodes.length; i++) {
+ var entry = noteholder.childNodes[i];
+ if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
+ entriesToRemove.push(entry);
+ }
+ for (i = 0; i < entriesToRemove.length; i++) {
+ noteholder.removeChild(entriesToRemove[i]);
+ }
+
+ // Rebuild footnote entries.
+ var cont = document.getElementById("content");
+ var spans = cont.getElementsByTagName("span");
+ var refs = {};
+ var n = 0;
+ for (i=0; i<spans.length; i++) {
+ if (spans[i].className == "footnote") {
+ n++;
+ var note = spans[i].getAttribute("data-note");
+ if (!note) {
+ // Use [\s\S] in place of . so multi-line matches work.
+ // Because JavaScript has no s (dotall) regex flag.
+ note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
+ spans[i].innerHTML =
+ "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
+ "' title='View footnote' class='footnote'>" + n + "</a>]";
+ spans[i].setAttribute("data-note", note);
+ }
+ noteholder.innerHTML +=
+ "<div class='footnote' id='_footnote_" + n + "'>" +
+ "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
+ n + "</a>. " + note + "</div>";
+ var id =spans[i].getAttribute("id");
+ if (id != null) refs["#"+id] = n;
+ }
+ }
+ if (n == 0)
+ noteholder.parentNode.removeChild(noteholder);
+ else {
+ // Process footnoterefs.
+ for (i=0; i<spans.length; i++) {
+ if (spans[i].className == "footnoteref") {
+ var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
+ href = href.match(/#.*/)[0]; // Because IE return full URL.
+ n = refs[href];
+ spans[i].innerHTML =
+ "[<a href='#_footnote_" + n +
+ "' title='View footnote' class='footnote'>" + n + "</a>]";
+ }
+ }
+ }
+},
+
+install: function(toclevels) {
+ var timerId;
+
+ function reinstall() {
+ asciidoc.footnotes();
+ if (toclevels) {
+ asciidoc.toc(toclevels);
+ }
+ }
+
+ function reinstallAndRemoveTimer() {
+ clearInterval(timerId);
+ reinstall();
+ }
+
+ timerId = setInterval(reinstall, 500);
+ if (document.addEventListener)
+ document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
+ else
+ window.onload = reinstallAndRemoveTimer;
+}
+
+}
+asciidoc.install(3);
+/*]]>*/
+</script>
+</head>
+<body class="article">
+<div id="header">
+</div>
+<div id="content">
+<div class="imageblock" style="text-align:center;">
+<div class="content">
+<img src="mobile-images/banner.jpg" alt="Banner" />
+</div>
+</div>
+<div class="paragraph"><p><span class="big">Subsurface-mobile for Android: USER MANUAL</span></p></div>
+<div class="paragraph"><p><strong>Manual author</strong>: Willem Ferguson</p></div>
+<div id="toc">
+ <div id="toctitle">Table of Contents</div>
+ <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
+</div>
+<div class="paragraph"><p><span class="blue"><em>Version 1.0, March 2016</em></span></p></div>
+<div class="paragraph"><p>Welcome as a user of <em>Subsurface</em>, advanced dive logging software with
+extensive infrastructure to describe, organize, interpret and print scuba
+and free dives. <em>Subsurface</em> offers many advantages over other similar
+software solutions, including compatibility with Windows, Mac-OS/X, Linux (many
+distributions) and Android (iOS under development). In addition, <em>Subsurface</em> is
+open-source software that allows downloading dive
+information from most dive computers.</p></div>
+<div class="sect1">
+<h2 id="_introducing_subsurface_mobile">1. Introducing Subsurface-mobile</h2>
+<div class="sectionbody">
+<div class="paragraph"><p><em>Subsurface-mobile</em> is an extension of <em>Subsurface</em> on laptop and
+tabletop computers. It runs on Android smartphone and tablet devices and is a
+tool for viewing or sharing dive information at dive sites where a larger
+computer is not useful. <em>Subsurface-mobile</em> also allows
+the gathering of GPS locations where dives are performed.</p></div>
+<div class="paragraph"><p>A version of <em>Subsurface-mobile</em> for iOS is under development but not yet
+ready for testing.</p></div>
+<div class="paragraph"><p>While <em>Subsurface-mobile</em> allows one to enter and save dive information
+using an Android device, users of <em>Subsurface-mobile</em> typically use the
+mobile app as an extension of the laptop/desktop version of <em>Subsurface</em>.
+This allows the storage of dive logs on the Internet and which
+can be shared by the Android version as well as the desktop version.
+While the desktop version of <em>Subsurface</em> shows much more detailed information
+for each dive, the mobile version allows one to have a more accessible dive log
+on a dive trip, useful for proving dive experience to dive shops or to review
+previous dives.</p></div>
+<div class="paragraph"><p><em>Subsurface-mobile</em> allows one to:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+Download existing dive log information from the Internet.
+</p>
+</li>
+<li>
+<p>
+View this information on an Android device.
+</p>
+</li>
+<li>
+<p>
+Edit many of the dive log data fields, e.g. divemaster, buddy,
+ equipment or notes about a dive.
+</p>
+</li>
+<li>
+<p>
+Create and add new dive records to one’s dive log.
+</p>
+</li>
+<li>
+<p>
+Store the updated dive log on the Internet.
+</p>
+</li>
+<li>
+<p>
+Record, store and apply GPS positions of dives.
+</p>
+</li>
+<li>
+<p>
+View the localities of recorded GPS positions and of dives
+ on a map.
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><p>These items are discussed in greater detail in the following text.
+What <em>Subsurface-mobile</em> does not support (at this time) is downloading
+dive data directly from a dive computer. That still has to happen with
+<em>Subsurface</em> on a desktop or laptop computer. We are investigating ways
+to support downloading from a subset of the supported dive computers on
+Android devices, but this is not yet ready for testing.</p></div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_installing_em_subsurface_mobile_em_on_an_android_device">2. Installing <em>Subsurface-mobile</em> on an Android device</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>Find <em>Subsurface-mobile</em> in the <em>Google
+Play Store</em>. Search for <em>Subsurface-mobile</em> and install it.</p></div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_using_em_subsurface_mobile_em_for_the_first_time">3. Using <em>Subsurface-mobile</em> for the first time</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>Upon starting <em>Subsurface-mobile</em> for the first time, a Subsurface
+splash screen is shown while the program loads. On some devices this
+may take several seconds. After loading, the <em>Cloud Credentials screen</em> appears
+(see image below).</p></div>
+<div class="imageblock" style="text-align:center;">
+<div class="content">
+<img src="mobile-images/landingscreen.jpg" alt="FIGURE: Mobile landing screen" />
+</div>
+</div>
+<div class="paragraph"><p>Since <em>Subsurface</em> is largely dependent on a dive log saved on the Internet,
+provide a user-ID and password for access to the <em>Subsurface Cloud</em>. These
+credentials are obtained by opening the desktop version of <em>Subsurface</em> and
+by clicking <em>File → Preferences → Network</em>, explained in detail in the
+user manual for the <em>Subsurface</em> desktop version. Once the account has
+been created and verified using the desktop version one can use <em>Subsurface-mobile</em>.</p></div>
+<div class="paragraph"><p>When entering a password, it is possible to check
+a checkbox that enables the text of the password to be shown. Checking the
+check box labelled "Remember" allows <em>Susburface-mobile</em> to keep the
+credentials for subsequent logins (see image above).
+Having entered the credentials, tap the disk icon at the bottom of the screen.
+<em>Subsurface-mobile</em> attempts to download the existing dive log from the_Subsurface_ cloud
+server. Appropriate messages are shown onscreen. Finally
+a list of dives are shown.</p></div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_local_copy_of_the_dive_log_and_synchronisation_with_internet">4. Local copy of the dive log and synchronisation with Internet</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>Once the dive
+list has been downloaded from the Internet, <em>Subsurface-mobile</em> keeps a local
+copy on the mobile device. This means that, if there is no Internet connection
+at a dive site, one can still access the local copy and view and manipulate
+dive information. If there is Internet connectivity, <em>Subsurface-mobile</em> accesses
+the Internet-based dive log to verify that the local copy is still the
+same as the Internet-stored copy. If not, the local copy and the copy on
+the server are synchronised.</p></div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_a_few_remarks_about_the_user_interface">5. A Few Remarks About The User Interface</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>At the bottom of many Subsurface-mobile screens is a round button that provides for
+several actions and which allows the selection of the main affirmative action
+(see image above and image below).
+On Android devices, use the Android Back
+button for "cancel", "discard" or "back" actions. For example, when
+editing dive information, tapping the action button saves the changes, the
+Android back button can be used to cancel the edit without saving changes.</p></div>
+<div class="imageblock" style="text-align:center;">
+<div class="content">
+<img src="mobile-images/actionbutton.jpg" alt="FIGURE: Action Button" />
+</div>
+</div>
+<div class="paragraph"><p>Instead of the more traditional "hamburger" menu button in the top left or
+right corner of the screen to open menus, <em>Subsurface-mobile</em> uses a
+different user interaction philosophy based on the Kirigami framework
+developed by the Plasma developers. To open the main menu one has
+three options:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+Tap on the right-arrow symbol in the lower left corner of the screen
+ (easy to reach for hand held devices)
+</p>
+</li>
+<li>
+<p>
+Swipe towards the right across the left edge of the screen
+</p>
+</li>
+<li>
+<p>
+Drag the action button visible on most screens with the main action to
+ the right
+</p>
+</li>
+</ul></div>
+<div class="imageblock" style="text-align:center;">
+<div class="content">
+<img src="mobile-images/menu.jpg" alt="FIGURE: Dive management subpanel" />
+</div>
+</div>
+<div class="paragraph"><p>The images above indicate some of the important features of the menu system.
+On the left is the main menu that is activated as described above. In the middle is
+the menu that opens if one taps the <em>GPS</em> option on the main menu. On the right is
+the menu that opens if one taps the <em>Manage Dives</em> option on the main menu.</p></div>
+<div class="paragraph"><p>Similarly, the context menu (currently only available on the dive details screen) can be
+opened one of these three ways:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+Tap on the left-arrow symbol in the lower right corner of the screen
+</p>
+</li>
+<li>
+<p>
+Swipe to the left across the right edge of the screen
+</p>
+</li>
+<li>
+<p>
+Drag the action button to the left
+</p>
+</li>
+</ul></div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_viewing_the_dive_list">6. Viewing the Dive List</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>Most of the actions of <em>Subsurface-mobile</em> center around the dives on the
+dive list. While the dive list is loading from the cloud,
+a message appears at the bottom of the screen, indicating that the cloud is
+being accessed (see image on left, below). Once the list is loaded one can scroll up and down.
+Tapping a dive on the list brings up a display of <em>Details View</em> for that dive (see image on right below).
+This includes the dive profile as well as additional information and notes.</p></div>
+<div class="imageblock" style="text-align:center;">
+<div class="content">
+<img src="mobile-images/divelist.jpg" alt="FIGURE: Dive list screen" />
+</div>
+</div>
+<div class="paragraph"><p>One can view other dives by swiping the <em>Details view</em> to the right (for the
+previous dive) or to the left (following dive).</p></div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_editing_dive_details">7. Editing dive details.</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>At the bottom of the dive details screen the <em>Action Button</em> contains a pencil (image on right, above).
+Tapping the button brings up a panel with edit boxes that allows one to
+change the existing dive information, e.g. adding text to the dive notes
+or changing the names or values of some of the information (see image below).
+It may be necessary to scroll the window to access all the information.
+At the bottom of the edit screen is a <em>Save</em> action button. Tap this to save
+the new information. Having saved the data, the dive list screen is
+updated and shown. To cancel any edits, tap the Android Back Button.</p></div>
+<div class="imageblock" style="text-align:center;">
+<div class="content">
+<img src="mobile-images/editdive.jpg" alt="FIGURE: Dive edit screen" />
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_adding_a_new_dive_to_the_dive_list">8. Adding a new dive to the dive list</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>It is also possible to add an additional dive to the existing dive list. On the
+main menu tap <em>Manage dives → Add dive manually</em>. This opens a screen that is
+identical to the editing screen discussed above. When a dive is added manually, one
+cannot directly add a dive profile from a dive computer. However, if one does not use a
+dive computer, the duration, depth and several other bits of information about
+the new dive can be entered. The <em>Action button</em> at the bottom of the screen
+contains a disk symbol. Tap this to save the new dive. To cancel any edits, tap the Android Back Button.
+The left-hand image below shows a screenshot of a dive being created and the right-hand image shows
+the same dive in <em>Details View</em>.</p></div>
+<div class="imageblock" style="text-align:center;">
+<div class="content">
+<img src="mobile-images/createdive.jpg" alt="FIGURE: Dive edit screen" />
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_deleting_a_dive">9. Deleting a dive</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>The <em>details view</em> of a dive has a context menu on the right-hand side that can be activated as described above
+(e.g. by tapping the arrow icon at the bottom right of the screen or by dragging the <em>Action Button</em> to the left).
+The context menu has a single item: "Delete dive". If this option is tapped, the dive shown in the <em>Details View</em>
+is deleted. One has a brief opportunity to undo the delete by tapping the <em>undo</em> message that appears at the bottom of
+the screen. If the <em>undo</em> message is not tapped, the dive is deleted.</p></div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_dive_log_management">10. Dive log management</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>A central part of <em>Subsurface-mobile</em> is the ability to store the dive
+log using the <em>Subsurface</em> cloud storage.
+This provides security against loss or damage to the dive information caintained in a local copy of
+the dive log and allows the desktop version of <em>Subsurface</em> to
+access changes made using the mobile device. This ability is accessed
+throug the main menu (by dragging the Action Button to the right, or
+alternatively tap the right angle button at the bottom left of the screen).
+ Tap the option <em>Manage dives</em>, enabling a number of options:</p></div>
+<div class="sect2">
+<h3 id="_add_new_dive_manually">10.1. Add new dive manually</h3>
+<div class="paragraph"><p>This is described above under the section dealing with the dive list.</p></div>
+</div>
+<div class="sect2">
+<h3 id="_upload_dive_log_to_the_em_subsurface_em_cloud_storage">10.2. Upload dive log to the <em>Subsurface</em> cloud storage</h3>
+<div class="paragraph"><p>One can upload the dives contained on the mobile device
+to the <em>Subsurface</em> cloud storage by tapping the option <em>Upload to cloud</em>.
+This synchronizes the local changes to
+the dive log with the cloud storage.</p></div>
+</div>
+<div class="sect2">
+<h3 id="_download_dive_log_from_the_cloud_storage">10.3. Download dive log from the cloud storage</h3>
+<div class="paragraph"><p>In the dive management subpanel, tap the option <em>Refresh</em>, causing
+the local divelog to be refreshed from the cloud so that the cloud
+and local versions are synchronised.</p></div>
+</div>
+<div class="sect2">
+<h3 id="_changing_the_login_credentials_on_the_em_subsurface_em_cloud">10.4. Changing the login credentials on the <em>Subsurface</em> cloud</h3>
+<div class="paragraph"><p>It may be necessary to change one’s login credentials, for instance if one’s email
+address (initially used as a credential) has changed. To change the credentials,
+open the main menu and tap <em>Cloud credentials</em>. This opens the setup screen
+for specifying new credentials.</p></div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_recording_dive_locations_using_gps">11. Recording dive locations using GPS.</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>The fact that most smartphones have GPS facilities allows one to record
+the locations of dives. One can take the smartphone on the dive boat
+during a dive and locations will be automatically recorded at regular intervals.
+These locations can then be applied to dives in the dive list. Here is how it’s done:</p></div>
+<div class="sect2">
+<h3 id="_setting_up_the_gps">11.1. Setting up the GPS</h3>
+<div class="paragraph"><p>Open the main menu and tap <em>GPS → Preferences</em>. Now specify the way
+in which GPS data need to be automatically collected (image on right, below). One can specify that
+data are collected at regular intervals, e.g. every 10 minutes, or at regular
+distances, e.g. after the boat has moved more than 200m, or a combination of
+both of the above approaches. Provide the appropriate information and
+tap the <em>Save</em> action button. The program is now ready to collect GPS positions.</p></div>
+<div class="imageblock" style="text-align:center;">
+<div class="content">
+<img src="mobile-images/gpssetup.jpg" alt="FIGURE: GPS setup screen" />
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_collecting_gps_positions">11.2. Collecting GPS positions</h3>
+<div class="paragraph"><p>Ensure that the GPS on the Android device has been activated. At the bottom
+of the GPS submenu is a check box <em>Run location service</em> (image on left, above).
+Check this box
+and <em>Subsurface-mobile</em> starts to collect GPS locations automatically,
+following the preferences specified as described above. After
+the dive one can deactivate the collection of GPS data by de-activating
+the same check box at the bottom of the main menu.</p></div>
+</div>
+<div class="sect2">
+<h3 id="_storing_the_gps_data_on_the_em_subsurface_em_cloud">11.3. Storing the GPS data on the <em>Subsurface</em> cloud</h3>
+<div class="paragraph"><p>Activate the main menu and select the <em>GPS</em> option that brings up the submenu of GPS-related actions
+(image on left, above). Tap <em>Upload GPS data</em> that saves the GPS data
+on the <em>Subsurface</em> cloud server. These GPS data are saved <strong>separately</strong>
+from the other dive log data. All collected GPS data are kept on the
+Android device, independent of whether they have been uploaded or not.</p></div>
+</div>
+<div class="sect2">
+<h3 id="_downloading_gps_data_from_the_em_subsurface_em_cloud">11.4. Downloading GPS data from the <em>Subsurface</em> cloud</h3>
+<div class="paragraph"><p>Download the GPS data that have been saved on the cloud by
+selecting <em>Download GPS Data</em> from the GPS subpanel.</p></div>
+</div>
+<div class="sect2">
+<h3 id="_viewing_gps_data">11.5. Viewing GPS data</h3>
+<div class="paragraph"><p>From the GPS submenu (image on left, above) select <em>Show GPS fixes</em>. This brings
+up a list of GPS positions obtained using the location service (image
+on left, below). Two actions are possible for each of the locations, enabled if
+one taps the handle (the three horisontal stripes on the right, see image on left, below) and
+then drags the specific item to the left (image on right, below). This exposes two
+options. Tapping the dustbin deletes this particular GPS location. Tapping the
+teardrop-shaped icon (actually a Google Maps pin) opens up Google Maps with a pin
+indicating the exact map position of the GPS record being viewed. The two above
+options can be hidden by drawing the GPS record to the right, again using the handle.</p></div>
+<div class="imageblock" style="text-align:center;">
+<div class="content">
+<img src="mobile-images/gpsmanagement.jpg" alt="FIGURE: GPS management" />
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_applying_gps_data_to_dives_in_the_dive_log">11.6. Applying GPS data to dives in the dive log</h3>
+<div class="paragraph"><p>Assuming that all the dives have been entered into the dive log or have
+been downloaded from the <em>Subsurface</em> cloud, one can apply the GPS positions to
+these dives. GPS positions can therefore only be applied to dives in the dive list.
+From the GPS subpanel, tap <em>Apply GPS fixes</em>. The dive list contains the start
+and end times of each dive. Now, <em>Subsurface-mobile</em> applies the first
+GPS position that falls within the dive period of each dive. This results
+in a GPS position for each dive that is saved as part of the dive list.</p></div>
+</div>
+</div>
+</div>
+</div>
+<div id="footnotes"><hr /></div>
+<div id="footer">
+<div id="footer-text">
+Last updated 2016-03-10 08:57:35 PST
+</div>
+</div>
+</body>
+</html>
diff --git a/Documentation/mobile-manual.txt b/Documentation/mobile-manual.txt index 67e06a1c7..b9ad78d74 100644 --- a/Documentation/mobile-manual.txt +++ b/Documentation/mobile-manual.txt @@ -19,14 +19,7 @@ image::mobile-images/banner.jpg["Banner",align="center"] toc::[] -[blue]#_Beta release, March 2016_# - -//IMPORTANT: For this BETA release it is critical that users report any problems -//with the use of the mobile software. After all, one of the objectives -//of a beta release is to distribute the software to a broader circle -//of users using different Android devices and configurations in order to -//iron out any bugs, errors or inconsistencies. Please report -//such issues by email to subsurface@subsurface-divelog.org +[blue]#_Version 1.0, March 2016_# Welcome as a user of _Subsurface_, advanced dive logging software with extensive infrastructure to describe, organize, interpret and print scuba @@ -107,7 +100,6 @@ _Subsurface-mobile_ attempts to download the existing dive log from the_Subsurfa server. Appropriate messages are shown onscreen. Finally a list of dives are shown. -//For the beta release, do not choose the options "Transfer from dive computer" or "Add dive manually" == Local copy of the dive log and synchronisation with Internet |