resources/scenemain.lua

Wed, 31 Jul 2013 19:28:00 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Jul 2013 19:28:00 +0200
changeset 0
7ff85f7ce3a7
permissions
-rw-r--r--

Flush prograss with initial commit.

     1 -- Initiate scene management
     2 local sceneloc = director:createScene()
     3 sceneloc.name = 'Scene: Main'
     5 -- Database instantiated
     6 local debe
     7 local pathStor = system:getFilePath('storage')
     8 debe = sqlite3.open(pathStor .. 'amalog.sql')
     9 debe:exec[=[
    10     CREATE TABLE qsos(id INTEGER PRIMARY KEY, call TEXT);
    11 ]=]
    12 debe:close()
    13 debe = nil
    15 -- Constants calculated
    16 local dsw = director.displayWidth
    17 local dsh = director.displayHeight
    18 local dmw = director.displayCenterX
    19 local dmh = director.displayCenterY
    21 -- Fonts created
    22 local fontsegoe = director:createFont('fonts/SegoeUI-92pt_smbld.fnt')
    23 local fontarial = director:createFont('fonts/Arial-96pt_bold.fnt')
    25 -- Tables of indexed and marked db rows
    26 local dbIdx = {0, 0, 0, 0, 0, 0, 0}
    27 local dbMrk = {0, 0, 0, 0, 0, 0, 0}
    29 -- Scrolling index
    30 local nScroll = 0
    32 -- Scrolling placeholder
    33 local posMove = 0
    35 function sceneloc:setUp(event)
    36     dbg.print('sceneloc:setUp')
    37     --self.obj0 = director:createLabel(4, dh/2, 'MAIN MENU')
    38     --self.obj1 = director:createRectangle(
    40     -- Print background
    41     local imgback = director:createSprite(0, dsh - fontarial.height * 12, 'textures/skynorm.png')
    42     imgback.xScale = dsw / imgback.w
    43     imgback.yScale = fontarial.height * 10.5 / imgback.h
    45     -- Declare defaults
    46     --director:setNodesColor(32, 32, 32, 128)
    47     --director:setNodesColor(112, 128, 144, 255)
    48     director:setNodesColor(192, 192, 192)
    50     -- Heading labels
    51     --    x=0, y=dsh-fontarial.height,
    52     --    x=dsw/2, y=dsh-fontarial.height,
    53     --    textTouchableBorder=0
    54     local labnull = director:createLabel()
    55     --labnull.isVisible = false
    56     --    x=-dsw/4, y=-fontarial.height*1.5/6,
    57     --    x=dsw/4, y=-fontarial.height*1.5/6,
    58     --    hAlignment='centre', vAlignment='top',
    59     local labtitle = director:createLabel({
    60         x=0, y=-fontarial.height*1.5/6,
    61         hAlignment='centre', vAlignment='top',
    62         font=fontarial,
    63         text='Amalog',
    64         color={0xe0, 0xe0, 0xff}
    65     })
    66     local butabout = director:createSprite(0, 0, 'images/buttinfo.png')
    67     butabout.x = fontarial.height*1.5/2
    68     butabout.y = dsh-fontarial.height*1.5/2
    69     butabout.xAnchor = 0.5
    70     butabout.yAnchor = 0.5
    71     local buthelp = director:createSprite(0, 0, 'images/butthelp.png')
    72     buthelp.x = dsw-fontarial.height*1.5/2
    73     buthelp.y = dsh-fontarial.height*1.5/2
    74     buthelp.xAnchor = 0.5
    75     buthelp.yAnchor = 0.5
    76     --tween:dissolve(labnull, butabout, 1, 0)
    77     --tween:dissolve(labnull, buthelp, 1, 0)
    79     --local rectest = director:createRectangle(0, (dsh - fontarial.height * 4.5), dsw, fontarial.height * 1.5)
    80     rectoddy = director:createRectangle(0, (dsh - fontarial.height * 3), dsw, fontarial.height * 1.5)
    81     --rectoddy.color = color.black; rectoddy.color.a = 224;
    82     rectoddy.color = color.lightGrey
    83     recteven = director:createRectangle(0, (dsh - fontarial.height * 4.5), dsw, fontarial.height * 1.5)
    84     recthree = director:createRectangle(0, (dsh - fontarial.height * 6), dsw, fontarial.height * 1.5)
    85     --recthree.color = color.black; recthree.color.a = 224;
    86     recthree.color = color.lightGrey
    87     rectfour = director:createRectangle(0, (dsh - fontarial.height * 7.5), dsw, fontarial.height * 1.5)
    88     rectfive = director:createRectangle(0, (dsh - fontarial.height * 9), dsw, fontarial.height * 1.5)
    89     --rectfive.color = color.black; rectfive.color.a = 224;
    90     rectfive.color = color.lightGrey
    91     rectseis = director:createRectangle(0, (dsh - fontarial.height * 10.5), dsw, fontarial.height * 1.5)
    92     rectsieb = director:createRectangle(0, (dsh - fontarial.height * 12), dsw, fontarial.height * 1.5)
    93     --rectsieb.color = color.black; rectsieb.color.a = 224;
    94     rectsieb.color = color.lightGrey
    96     ----local labtext = director:createLabel(0, 0, 'Excusez moi Welt!')
    97     --local labheight = director:createLabel({x=0, y=0, font=fontsegoe, color=color.white, text=dsh})
    98     --local labwidth  = director:createLabel({x=0, y=fontsegoe.height, font=fontsegoe, color=color.yellow, text=dsw})
    99     --local labmith  = director:createLabel({x=0, y=2*fontsegoe.height, font=fontsegoe, color=color.green, text=dmh})
   100     --local labmitw  = director:createLabel({x=0, y=3*fontsegoe.height, font=fontsegoe, color=color.blue, text=dmw})
   102     function rectoddy:touch(event)
   103         if event.phase == 'began' then
   104             posMove = event.y
   105             local nBase = event.y - (dsh - fontarial.height * 12)
   106             local nRect = fontarial.height * 1.5
   107             local nTemp = nBase / nRect
   108             local nIdx  = 7 - math.floor(nTemp)
   109             if dbIdx[nIdx] == 0 then
   110                 return
   111             elseif rectoddy.color.r == 240 and rectoddy.color.g == 230 and rectoddy.color.b == 140 then
   112                 rectoddy.color = color.lightGrey
   113                 dbMrk[nIdx] = 0
   114             else
   115                 rectoddy.color = color.khaki
   116                 dbMrk[nIdx] = dbIdx[nIdx]
   117             end
   118         end
   120         --if event.phase == 'moved' then
   121         --    posMove = event.y
   122         --end
   124         if event.phase == 'ended' then
   125             if math.abs(event.y - posMove) > fontarial.height*1.5 then
   126                 -- Provide callback to count rows in table
   127                 local nCount = 0
   128                 function countrows(udata, cols, values, names)
   129                     assert(udata == 'dingdong')
   130                     nCount = tonumber(values[1])
   131                     return 0
   132                 end
   134                 -- Repopulate UI conditionally
   135                 debe = sqlite3.open(pathStor .. 'amalog.sql')
   136                 local nRet = debe:exec('SELECT Count(*) FROM qsos', countrows, 'dingdong')
   137                 debe:close()
   138                 debe = nil
   140                 if event.y - posMove > 0 then  -- Gesture upward
   141                     if nScroll + 7 < nCount then
   142                         nScroll = nScroll + 7
   143                     else
   144                         return
   145                     end
   146                 else -- Gesture downward
   147                     if nScroll - 7 >= 0 then
   148                         nScroll = nScroll - 7
   149                     else
   150                         return
   151                     end
   152                 end
   154                 -- Kludge stucked event handlers
   155                 rectoddy:removeEventListener('touch', rectoddy)
   156                 recteven:removeEventListener('touch', recteven)
   157                 recthree:removeEventListener('touch', recthree)
   158                 rectfour:removeEventListener('touch', rectfour)
   159                 rectfive:removeEventListener('touch', rectfive)
   160                 rectseis:removeEventListener('touch', rectseis)
   161                 rectsieb:removeEventListener('touch', rectsieb)
   163                 -- Clear viewport
   164                 for nIter = 0, 6 do
   165                     local rectfresh = director:createRectangle(0, (dsh - fontarial.height * 3 - nIter * fontarial.height * 1.5), dsw, fontarial.height * 1.5)
   167                     function rectfresh:touch(event)
   168                         if event.phase == 'began' then
   169                             posMove = event.y
   170                             local nBase = event.y - (dsh - fontarial.height * 12)
   171                             local nRect = fontarial.height * 1.5
   172                             local nTemp = nBase / nRect
   173                             local nIdx  = 7 - math.floor(nTemp)
   174                             if dbIdx[nIdx] == 0 then
   175                                 return
   176                             elseif event.target.color.r == 240 and event.target.color.g == 230 and event.target.color.b == 140 then
   177                                 event.target.color = color.lightGrey
   178                                 dbMrk[nIdx] = 0
   179                             elseif event.target.color.r == 220 and event.target.color.g == 210 and event.target.color.b == 120 then
   180                                 event.target.color = {192, 192, 192}
   181                                 dbMrk[nIdx] = 0
   182                             elseif event.target.color.r == 192 and event.target.color.g == 192 and event.target.color.b == 192 then
   183                                 event.target.color = {220, 210, 120}
   184                                 dbMrk[nIdx] = dbIdx[nIdx]
   185                             else
   186                                 event.target.color = color.khaki
   187                                 dbMrk[nIdx] = dbIdx[nIdx]
   188                             end
   189                         end
   190                         if event.phase == 'ended' then
   191                             if math.abs(event.y - posMove) > fontarial.height*1.5 then
   192                                 -- Provide callback to count rows in table
   193                                 local nCount = 0
   194                                 function countrows(udata, cols, values, names)
   195                                     assert(udata == 'dingdong')
   196                                     nCount = tonumber(values[1])
   197                                     return 0
   198                                 end
   200                                 -- Repopulate UI conditionally
   201                                 debe = sqlite3.open(pathStor .. 'amalog.sql')
   202                                 local nRet = debe:exec('SELECT Count(*) FROM qsos', countrows, 'dingdong')
   203                                 debe:close()
   204                                 debe = nil
   206                                 if event.y - posMove > 0 then  -- Gesture upward
   207                                     if nScroll + 7 < nCount then
   208                                         nScroll = nScroll + 7
   209                                     else
   210                                         return
   211                                     end
   212                                 else -- Gesture downward
   213                                     if nScroll - 7 >= 0 then
   214                                         nScroll = nScroll - 7
   215                                     else
   216                                         return
   217                                     end
   218                                 end
   220                                 -- Kludge stucked event handlers
   221                                 rectoddy:removeEventListener('touch', rectoddy)
   222                                 recteven:removeEventListener('touch', recteven)
   223                                 recthree:removeEventListener('touch', recthree)
   224                                 rectfour:removeEventListener('touch', rectfour)
   225                                 rectfive:removeEventListener('touch', rectfive)
   226                                 rectseis:removeEventListener('touch', rectseis)
   227                                 rectsieb:removeEventListener('touch', rectsieb)
   229                                 -- Clear viewport
   230                                 for nIter = 0, 6 do
   231                                     local rectfresh = director:createRectangle(0, (dsh - fontarial.height * 3 - nIter * fontarial.height * 1.5), dsw, fontarial.height * 1.5)
   233                                     function rectfresh:touch(event)
   234                                         if event.phase == 'began' then
   235                                             posMove = event.y
   236                                             local nBase = event.y - (dsh - fontarial.height * 12)
   237                                             local nRect = fontarial.height * 1.5
   238                                             local nTemp = nBase / nRect
   239                                             local nIdx  = 7 - math.floor(nTemp)
   240                                             if dbIdx[nIdx] == 0 then
   241                                                 return
   242                                             elseif event.target.color.r == 240 and event.target.color.g == 230 and event.target.color.b == 140 then
   243                                                 event.target.color = color.lightGrey
   244                                                 dbMrk[nIdx] = 0
   245                                             elseif event.target.color.r == 220 and event.target.color.g == 210 and event.target.color.b == 120 then
   246                                                 event.target.color = {192, 192, 192}
   247                                                 dbMrk[nIdx] = 0
   248                                             elseif event.target.color.r == 192 and event.target.color.g == 192 and event.target.color.b == 192 then
   249                                                 event.target.color = {220, 210, 120}
   250                                                 dbMrk[nIdx] = dbIdx[nIdx]
   251                                             else
   252                                                 event.target.color = color.khaki
   253                                                 dbMrk[nIdx] = dbIdx[nIdx]
   254                                             end
   255                                         end
   256                                     end
   257                                     rectfresh:addEventListener('touch', rectfresh)
   259                                     if nIter % 2 == 0 then
   260                                         rectfresh.color = color.lightGrey
   261                                     else
   262                                         rectfresh.color = {192, 192, 192}
   263                                     end
   265                                     -- Clear indexes
   266                                     dbIdx[nIter+1] = 0
   267                                     dbMrk[nIter+1] = 0
   268                                 end
   270                                 -- Redraw labels
   271                                 local nIter = 6
   272                                 --for nIter = 0, 7 do
   273                                 local nTemp = nCount - nScroll
   274                                 if nTemp < 7 then
   275                                     nIter = nTemp - 1
   276                                 end
   278                                 debe = sqlite3.open(pathStor .. 'amalog.sql')
   279                                 for dbRows in debe:nrows('SELECT * FROM qsos') do
   280                                     if nTemp < 8 then
   281                                         if nTemp < 0 then break end
   282                                         if nIter < 0 then break end
   283                                         local labrepop = director:createLabel({
   284                                             x=fontsegoe.height/2, y=dsh-fontarial.height*(3+nIter*1.5) + (fontsegoe.height/3),
   285                                             hAlignment='left', vAlignment='bottom',
   286                                             font=fontsegoe,
   287                                             text=dbRows['call']
   288                                         })
   289                                         dbIdx[nIter+1] = dbRows['id']
   290                                         nIter = nIter - 1
   291                                         nTemp = nTemp - 1
   292                                     else
   293                                         nTemp = nTemp - 1
   294                                     end
   295                                 end
   296                                 debe:close()
   297                                 debe = nil
   298                             end
   299                             posMove = 0
   300                         end
   301                     end
   302                     rectfresh:addEventListener('touch', rectfresh)
   304                     if nIter % 2 == 0 then
   305                         rectfresh.color = color.lightGrey
   306                     else
   307                         rectfresh.color = {192, 192, 192}
   308                     end
   310                     -- Clear indexes
   311                     dbIdx[nIter+1] = 0
   312                     dbMrk[nIter+1] = 0
   313                 end
   315                 -- Redraw labels
   316                 local nIter = 6
   317                 --for nIter = 0, 7 do
   318                 local nTemp = nCount - nScroll
   319                 if nTemp < 7 then
   320                     nIter = nTemp - 1
   321                 end
   323                 debe = sqlite3.open(pathStor .. 'amalog.sql')
   324                 for dbRows in debe:nrows('SELECT * FROM qsos') do
   325                     if nTemp < 8 then
   326                         if nTemp < 0 then break end
   327                         if nIter < 0 then break end
   328                         local labrepop = director:createLabel({
   329                             x=fontsegoe.height/2, y=dsh-fontarial.height*(3+nIter*1.5) + (fontsegoe.height/3),
   330                             hAlignment='left', vAlignment='bottom',
   331                             font=fontsegoe,
   332                             text=dbRows['call']
   333                         })
   334                         dbIdx[nIter+1] = dbRows['id']
   335                         nIter = nIter - 1
   336                         nTemp = nTemp - 1
   337                     else
   338                         nTemp = nTemp - 1
   339                     end
   340                 end
   341                 debe:close()
   342                 debe = nil
   343             end
   344             posMove = 0
   345         end
   346     end
   347     rectoddy:addEventListener('touch', rectoddy)
   349     function recteven:touch(event)
   350         if event.phase == 'began' then
   351             posMove = event.y
   352             local nBase = event.y - (dsh - fontarial.height * 12)
   353             local nRect = fontarial.height * 1.5
   354             local nTemp = nBase / nRect
   355             local nIdx  = 7 - math.floor(nTemp)
   356             if dbIdx[nIdx] == 0 then
   357                 return
   358             elseif recteven.color.r == 220 and recteven.color.g == 210 and recteven.color.b == 120 then
   359                 recteven.color = {192, 192, 192}
   360                 dbMrk[nIdx] = 0
   361             else
   362                 recteven.color = {220, 210, 120}
   363                 dbMrk[nIdx] = dbIdx[nIdx]
   364             end
   365         end
   367         if event.phase == 'ended' then
   368             if math.abs(event.y - posMove) > fontarial.height*1.5 then
   369                 -- Provide callback to count rows in table
   370                 local nCount = 0
   371                 function countrows(udata, cols, values, names)
   372                     assert(udata == 'dingdong')
   373                     nCount = tonumber(values[1])
   374                     return 0
   375                 end
   377                 -- Repopulate UI conditionally
   378                 debe = sqlite3.open(pathStor .. 'amalog.sql')
   379                 local nRet = debe:exec('SELECT Count(*) FROM qsos', countrows, 'dingdong')
   380                 debe:close()
   381                 debe = nil
   383                 if event.y - posMove > 0 then  -- Gesture upward
   384                     if nScroll + 7 < nCount then
   385                         nScroll = nScroll + 7
   386                     else
   387                         return
   388                     end
   389                 else -- Gesture downward
   390                     if nScroll - 7 >= 0 then
   391                         nScroll = nScroll - 7
   392                     else
   393                         return
   394                     end
   395                 end
   397                 -- Kludge stucked event handlers
   398                 rectoddy:removeEventListener('touch', rectoddy)
   399                 recteven:removeEventListener('touch', recteven)
   400                 recthree:removeEventListener('touch', recthree)
   401                 rectfour:removeEventListener('touch', rectfour)
   402                 rectfive:removeEventListener('touch', rectfive)
   403                 rectseis:removeEventListener('touch', rectseis)
   404                 rectsieb:removeEventListener('touch', rectsieb)
   406                 -- Clear viewport
   407                 for nIter = 0, 6 do
   408                     local rectfresh = director:createRectangle(0, (dsh - fontarial.height * 3 - nIter * fontarial.height * 1.5), dsw, fontarial.height * 1.5)
   410                     function rectfresh:touch(event)
   411                         if event.phase == 'began' then
   412                             posMove = event.y
   413                             local nBase = event.y - (dsh - fontarial.height * 12)
   414                             local nRect = fontarial.height * 1.5
   415                             local nTemp = nBase / nRect
   416                             local nIdx  = 7 - math.floor(nTemp)
   417                             if dbIdx[nIdx] == 0 then
   418                                 return
   419                             elseif event.target.color.r == 240 and event.target.color.g == 230 and event.target.color.b == 140 then
   420                                 event.target.color = color.lightGrey
   421                                 dbMrk[nIdx] = 0
   422                             elseif event.target.color.r == 220 and event.target.color.g == 210 and event.target.color.b == 120 then
   423                                 event.target.color = {192, 192, 192}
   424                                 dbMrk[nIdx] = 0
   425                             elseif event.target.color.r == 192 and event.target.color.g == 192 and event.target.color.b == 192 then
   426                                 event.target.color = {220, 210, 120}
   427                                 dbMrk[nIdx] = dbIdx[nIdx]
   428                             else
   429                                 event.target.color = color.khaki
   430                                 dbMrk[nIdx] = dbIdx[nIdx]
   431                             end
   432                         end
   433                         if event.phase == 'ended' then
   434                             if math.abs(event.y - posMove) > fontarial.height*1.5 then
   435                                 -- Provide callback to count rows in table
   436                                 local nCount = 0
   437                                 function countrows(udata, cols, values, names)
   438                                     assert(udata == 'dingdong')
   439                                     nCount = tonumber(values[1])
   440                                     return 0
   441                                 end
   443                                 -- Repopulate UI conditionally
   444                                 debe = sqlite3.open(pathStor .. 'amalog.sql')
   445                                 local nRet = debe:exec('SELECT Count(*) FROM qsos', countrows, 'dingdong')
   446                                 debe:close()
   447                                 debe = nil
   449                                 if event.y - posMove > 0 then  -- Gesture upward
   450                                     if nScroll + 7 < nCount then
   451                                         nScroll = nScroll + 7
   452                                     else
   453                                         return
   454                                     end
   455                                 else -- Gesture downward
   456                                     if nScroll - 7 >= 0 then
   457                                         nScroll = nScroll - 7
   458                                     else
   459                                         return
   460                                     end
   461                                 end
   463                                 -- Kludge stucked event handlers
   464                                 rectoddy:removeEventListener('touch', rectoddy)
   465                                 recteven:removeEventListener('touch', recteven)
   466                                 recthree:removeEventListener('touch', recthree)
   467                                 rectfour:removeEventListener('touch', rectfour)
   468                                 rectfive:removeEventListener('touch', rectfive)
   469                                 rectseis:removeEventListener('touch', rectseis)
   470                                 rectsieb:removeEventListener('touch', rectsieb)
   472                                 -- Clear viewport
   473                                 for nIter = 0, 6 do
   474                                     local rectfresh = director:createRectangle(0, (dsh - fontarial.height * 3 - nIter * fontarial.height * 1.5), dsw, fontarial.height * 1.5)
   476                                     function rectfresh:touch(event)
   477                                         if event.phase == 'began' then
   478                                             posMove = event.y
   479                                             local nBase = event.y - (dsh - fontarial.height * 12)
   480                                             local nRect = fontarial.height * 1.5
   481                                             local nTemp = nBase / nRect
   482                                             local nIdx  = 7 - math.floor(nTemp)
   483                                             if dbIdx[nIdx] == 0 then
   484                                                 return
   485                                             elseif event.target.color.r == 240 and event.target.color.g == 230 and event.target.color.b == 140 then
   486                                                 event.target.color = color.lightGrey
   487                                                 dbMrk[nIdx] = 0
   488                                             elseif event.target.color.r == 220 and event.target.color.g == 210 and event.target.color.b == 120 then
   489                                                 event.target.color = {192, 192, 192}
   490                                                 dbMrk[nIdx] = 0
   491                                             elseif event.target.color.r == 192 and event.target.color.g == 192 and event.target.color.b == 192 then
   492                                                 event.target.color = {220, 210, 120}
   493                                                 dbMrk[nIdx] = dbIdx[nIdx]
   494                                             else
   495                                                 event.target.color = color.khaki
   496                                                 dbMrk[nIdx] = dbIdx[nIdx]
   497                                             end
   498                                         end
   499                                     end
   500                                     rectfresh:addEventListener('touch', rectfresh)
   502                                     if nIter % 2 == 0 then
   503                                         rectfresh.color = color.lightGrey
   504                                     else
   505                                         rectfresh.color = {192, 192, 192}
   506                                     end
   508                                     -- Clear indexes
   509                                     dbIdx[nIter+1] = 0
   510                                     dbMrk[nIter+1] = 0
   511                                 end
   513                                 -- Redraw labels
   514                                 local nIter = 6
   515                                 --for nIter = 0, 7 do
   516                                 local nTemp = nCount - nScroll
   517                                 if nTemp < 7 then
   518                                     nIter = nTemp - 1
   519                                 end
   521                                 debe = sqlite3.open(pathStor .. 'amalog.sql')
   522                                 for dbRows in debe:nrows('SELECT * FROM qsos') do
   523                                     if nTemp < 8 then
   524                                         if nTemp < 0 then break end
   525                                         if nIter < 0 then break end
   526                                         local labrepop = director:createLabel({
   527                                             x=fontsegoe.height/2, y=dsh-fontarial.height*(3+nIter*1.5) + (fontsegoe.height/3),
   528                                             hAlignment='left', vAlignment='bottom',
   529                                             font=fontsegoe,
   530                                             text=dbRows['call']
   531                                         })
   532                                         dbIdx[nIter+1] = dbRows['id']
   533                                         nIter = nIter - 1
   534                                         nTemp = nTemp - 1
   535                                     else
   536                                         nTemp = nTemp - 1
   537                                     end
   538                                 end
   539                                 debe:close()
   540                                 debe = nil
   541                             end
   542                             posMove = 0
   543                         end
   544                     end
   545                     rectfresh:addEventListener('touch', rectfresh)
   547                     if nIter % 2 == 0 then
   548                         rectfresh.color = color.lightGrey
   549                     else
   550                         rectfresh.color = {192, 192, 192}
   551                     end
   553                     -- Clear indexes
   554                     dbIdx[nIter+1] = 0
   555                     dbMrk[nIter+1] = 0
   556                 end
   558                 -- Redraw labels
   559                 local nIter = 6
   560                 --for nIter = 0, 7 do
   561                 local nTemp = nCount - nScroll
   562                 if nTemp < 7 then
   563                     nIter = nTemp - 1
   564                 end
   566                 debe = sqlite3.open(pathStor .. 'amalog.sql')
   567                 for dbRows in debe:nrows('SELECT * FROM qsos') do
   568                     if nTemp < 8 then
   569                         if nTemp < 0 then break end
   570                         if nIter < 0 then break end
   571                         local labrepop = director:createLabel({
   572                             x=fontsegoe.height/2, y=dsh-fontarial.height*(3+nIter*1.5) + (fontsegoe.height/3),
   573                             hAlignment='left', vAlignment='bottom',
   574                             font=fontsegoe,
   575                             text=dbRows['call']
   576                         })
   577                         dbIdx[nIter+1] = dbRows['id']
   578                         nIter = nIter - 1
   579                         nTemp = nTemp - 1
   580                     else
   581                         nTemp = nTemp - 1
   582                     end
   583                 end
   584                 debe:close()
   585                 debe = nil
   586             end
   587             posMove = 0
   588         end
   589     end
   590     recteven:addEventListener('touch', recteven)
   592     function recthree:touch(event)
   593         if event.phase == 'began' then
   594             posMove = event.y
   595             local nBase = event.y - (dsh - fontarial.height * 12)
   596             local nRect = fontarial.height * 1.5
   597             local nTemp = nBase / nRect
   598             local nIdx  = 7 - math.floor(nTemp)
   599             if dbIdx[nIdx] == 0 then
   600                 return
   601             elseif recthree.color.r == 240 and recthree.color.g == 230 and recthree.color.b == 140 then
   602                 recthree.color = color.lightGrey
   603                 dbMrk[nIdx] = 0
   604             else
   605                 recthree.color = color.khaki
   606                 dbMrk[nIdx] = dbIdx[nIdx]
   607             end
   608         end
   610         if event.phase == 'ended' then
   611             if math.abs(event.y - posMove) > fontarial.height*1.5 then
   612                 -- Provide callback to count rows in table
   613                 local nCount = 0
   614                 function countrows(udata, cols, values, names)
   615                     assert(udata == 'dingdong')
   616                     nCount = tonumber(values[1])
   617                     return 0
   618                 end
   620                 -- Repopulate UI conditionally
   621                 debe = sqlite3.open(pathStor .. 'amalog.sql')
   622                 local nRet = debe:exec('SELECT Count(*) FROM qsos', countrows, 'dingdong')
   623                 debe:close()
   624                 debe = nil
   626                 if event.y - posMove > 0 then  -- Gesture upward
   627                     if nScroll + 7 < nCount then
   628                         nScroll = nScroll + 7
   629                     else
   630                         return
   631                     end
   632                 else -- Gesture downward
   633                     if nScroll - 7 >= 0 then
   634                         nScroll = nScroll - 7
   635                     else
   636                         return
   637                     end
   638                 end
   640                 -- Kludge stucked event handlers
   641                 rectoddy:removeEventListener('touch', rectoddy)
   642                 recteven:removeEventListener('touch', recteven)
   643                 recthree:removeEventListener('touch', recthree)
   644                 rectfour:removeEventListener('touch', rectfour)
   645                 rectfive:removeEventListener('touch', rectfive)
   646                 rectseis:removeEventListener('touch', rectseis)
   647                 rectsieb:removeEventListener('touch', rectsieb)
   649                 -- Clear viewport
   650                 for nIter = 0, 6 do
   651                     local rectfresh = director:createRectangle(0, (dsh - fontarial.height * 3 - nIter * fontarial.height * 1.5), dsw, fontarial.height * 1.5)
   653                     function rectfresh:touch(event)
   654                         if event.phase == 'began' then
   655                             posMove = event.y
   656                             local nBase = event.y - (dsh - fontarial.height * 12)
   657                             local nRect = fontarial.height * 1.5
   658                             local nTemp = nBase / nRect
   659                             local nIdx  = 7 - math.floor(nTemp)
   660                             if dbIdx[nIdx] == 0 then
   661                                 return
   662                             elseif event.target.color.r == 240 and event.target.color.g == 230 and event.target.color.b == 140 then
   663                                 event.target.color = color.lightGrey
   664                                 dbMrk[nIdx] = 0
   665                             elseif event.target.color.r == 220 and event.target.color.g == 210 and event.target.color.b == 120 then
   666                                 event.target.color = {192, 192, 192}
   667                                 dbMrk[nIdx] = 0
   668                             elseif event.target.color.r == 192 and event.target.color.g == 192 and event.target.color.b == 192 then
   669                                 event.target.color = {220, 210, 120}
   670                                 dbMrk[nIdx] = dbIdx[nIdx]
   671                             else
   672                                 event.target.color = color.khaki
   673                                 dbMrk[nIdx] = dbIdx[nIdx]
   674                             end
   675                         end
   676                         if event.phase == 'ended' then
   677                             if math.abs(event.y - posMove) > fontarial.height*1.5 then
   678                                 -- Provide callback to count rows in table
   679                                 local nCount = 0
   680                                 function countrows(udata, cols, values, names)
   681                                     assert(udata == 'dingdong')
   682                                     nCount = tonumber(values[1])
   683                                     return 0
   684                                 end
   686                                 -- Repopulate UI conditionally
   687                                 debe = sqlite3.open(pathStor .. 'amalog.sql')
   688                                 local nRet = debe:exec('SELECT Count(*) FROM qsos', countrows, 'dingdong')
   689                                 debe:close()
   690                                 debe = nil
   692                                 if event.y - posMove > 0 then  -- Gesture upward
   693                                     if nScroll + 7 < nCount then
   694                                         nScroll = nScroll + 7
   695                                     else
   696                                         return
   697                                     end
   698                                 else -- Gesture downward
   699                                     if nScroll - 7 >= 0 then
   700                                         nScroll = nScroll - 7
   701                                     else
   702                                         return
   703                                     end
   704                                 end
   706                                 -- Kludge stucked event handlers
   707                                 rectoddy:removeEventListener('touch', rectoddy)
   708                                 recteven:removeEventListener('touch', recteven)
   709                                 recthree:removeEventListener('touch', recthree)
   710                                 rectfour:removeEventListener('touch', rectfour)
   711                                 rectfive:removeEventListener('touch', rectfive)
   712                                 rectseis:removeEventListener('touch', rectseis)
   713                                 rectsieb:removeEventListener('touch', rectsieb)
   715                                 -- Clear viewport
   716                                 for nIter = 0, 6 do
   717                                     local rectfresh = director:createRectangle(0, (dsh - fontarial.height * 3 - nIter * fontarial.height * 1.5), dsw, fontarial.height * 1.5)
   719                                     function rectfresh:touch(event)
   720                                         if event.phase == 'began' then
   721                                             posMove = event.y
   722                                             local nBase = event.y - (dsh - fontarial.height * 12)
   723                                             local nRect = fontarial.height * 1.5
   724                                             local nTemp = nBase / nRect
   725                                             local nIdx  = 7 - math.floor(nTemp)
   726                                             if dbIdx[nIdx] == 0 then
   727                                                 return
   728                                             elseif event.target.color.r == 240 and event.target.color.g == 230 and event.target.color.b == 140 then
   729                                                 event.target.color = color.lightGrey
   730                                                 dbMrk[nIdx] = 0
   731                                             elseif event.target.color.r == 220 and event.target.color.g == 210 and event.target.color.b == 120 then
   732                                                 event.target.color = {192, 192, 192}
   733                                                 dbMrk[nIdx] = 0
   734                                             elseif event.target.color.r == 192 and event.target.color.g == 192 and event.target.color.b == 192 then
   735                                                 event.target.color = {220, 210, 120}
   736                                                 dbMrk[nIdx] = dbIdx[nIdx]
   737                                             else
   738                                                 event.target.color = color.khaki
   739                                                 dbMrk[nIdx] = dbIdx[nIdx]
   740                                             end
   741                                         end
   742                                     end
   743                                     rectfresh:addEventListener('touch', rectfresh)
   745                                     if nIter % 2 == 0 then
   746                                         rectfresh.color = color.lightGrey
   747                                     else
   748                                         rectfresh.color = {192, 192, 192}
   749                                     end
   751                                     -- Clear indexes
   752                                     dbIdx[nIter+1] = 0
   753                                     dbMrk[nIter+1] = 0
   754                                 end
   756                                 -- Redraw labels
   757                                 local nIter = 6
   758                                 --for nIter = 0, 7 do
   759                                 local nTemp = nCount - nScroll
   760                                 if nTemp < 7 then
   761                                     nIter = nTemp - 1
   762                                 end
   764                                 debe = sqlite3.open(pathStor .. 'amalog.sql')
   765                                 for dbRows in debe:nrows('SELECT * FROM qsos') do
   766                                     if nTemp < 8 then
   767                                         if nTemp < 0 then break end
   768                                         if nIter < 0 then break end
   769                                         local labrepop = director:createLabel({
   770                                             x=fontsegoe.height/2, y=dsh-fontarial.height*(3+nIter*1.5) + (fontsegoe.height/3),
   771                                             hAlignment='left', vAlignment='bottom',
   772                                             font=fontsegoe,
   773                                             text=dbRows['call']
   774                                         })
   775                                         dbIdx[nIter+1] = dbRows['id']
   776                                         nIter = nIter - 1
   777                                         nTemp = nTemp - 1
   778                                     else
   779                                         nTemp = nTemp - 1
   780                                     end
   781                                 end
   782                                 debe:close()
   783                                 debe = nil
   784                             end
   785                             posMove = 0
   786                         end
   787                     end
   788                     rectfresh:addEventListener('touch', rectfresh)
   790                     if nIter % 2 == 0 then
   791                         rectfresh.color = color.lightGrey
   792                     else
   793                         rectfresh.color = {192, 192, 192}
   794                     end
   796                     -- Clear indexes
   797                     dbIdx[nIter+1] = 0
   798                     dbMrk[nIter+1] = 0
   799                 end
   801                 -- Redraw labels
   802                 local nIter = 6
   803                 --for nIter = 0, 7 do
   804                 local nTemp = nCount - nScroll
   805                 if nTemp < 7 then
   806                     nIter = nTemp - 1
   807                 end
   809                 debe = sqlite3.open(pathStor .. 'amalog.sql')
   810                 for dbRows in debe:nrows('SELECT * FROM qsos') do
   811                     if nTemp < 8 then
   812                         if nTemp < 0 then break end
   813                         if nIter < 0 then break end
   814                         local labrepop = director:createLabel({
   815                             x=fontsegoe.height/2, y=dsh-fontarial.height*(3+nIter*1.5) + (fontsegoe.height/3),
   816                             hAlignment='left', vAlignment='bottom',
   817                             font=fontsegoe,
   818                             text=dbRows['call']
   819                         })
   820                         dbIdx[nIter+1] = dbRows['id']
   821                         nIter = nIter - 1
   822                         nTemp = nTemp - 1
   823                     else
   824                         nTemp = nTemp - 1
   825                     end
   826                 end
   827                 debe:close()
   828                 debe = nil
   829             end
   830             posMove = 0
   831         end
   832     end
   833     recthree:addEventListener('touch', recthree)
   835     function rectfour:touch(event)
   836         if event.phase == 'began' then
   837             posMove = event.y
   838             local nBase = event.y - (dsh - fontarial.height * 12)
   839             local nRect = fontarial.height * 1.5
   840             local nTemp = nBase / nRect
   841             local nIdx  = 7 - math.floor(nTemp)
   842             if dbIdx[nIdx] == 0 then
   843                 return
   844             elseif rectfour.color.r == 220 and rectfour.color.g == 210 and rectfour.color.b == 120 then
   845                 rectfour.color = {192, 192, 192}
   846                 dbMrk[nIdx] = 0
   847             else
   848                 rectfour.color = {220, 210, 120}
   849                 dbMrk[nIdx] = dbIdx[nIdx]
   850             end
   851         end
   853         if event.phase == 'ended' then
   854             if math.abs(event.y - posMove) > fontarial.height*1.5 then
   855                 -- Provide callback to count rows in table
   856                 local nCount = 0
   857                 function countrows(udata, cols, values, names)
   858                     assert(udata == 'dingdong')
   859                     nCount = tonumber(values[1])
   860                     return 0
   861                 end
   863                 -- Repopulate UI conditionally
   864                 debe = sqlite3.open(pathStor .. 'amalog.sql')
   865                 local nRet = debe:exec('SELECT Count(*) FROM qsos', countrows, 'dingdong')
   866                 debe:close()
   867                 debe = nil
   869                 if event.y - posMove > 0 then  -- Gesture upward
   870                     if nScroll + 7 < nCount then
   871                         nScroll = nScroll + 7
   872                     else
   873                         return
   874                     end
   875                 else -- Gesture downward
   876                     if nScroll - 7 >= 0 then
   877                         nScroll = nScroll - 7
   878                     else
   879                         return
   880                     end
   881                 end
   883                 -- Kludge stucked event handlers
   884                 rectoddy:removeEventListener('touch', rectoddy)
   885                 recteven:removeEventListener('touch', recteven)
   886                 recthree:removeEventListener('touch', recthree)
   887                 rectfour:removeEventListener('touch', rectfour)
   888                 rectfive:removeEventListener('touch', rectfive)
   889                 rectseis:removeEventListener('touch', rectseis)
   890                 rectsieb:removeEventListener('touch', rectsieb)
   892                 -- Clear viewport
   893                 for nIter = 0, 6 do
   894                     local rectfresh = director:createRectangle(0, (dsh - fontarial.height * 3 - nIter * fontarial.height * 1.5), dsw, fontarial.height * 1.5)
   896                     function rectfresh:touch(event)
   897                         if event.phase == 'began' then
   898                             posMove = event.y
   899                             local nBase = event.y - (dsh - fontarial.height * 12)
   900                             local nRect = fontarial.height * 1.5
   901                             local nTemp = nBase / nRect
   902                             local nIdx  = 7 - math.floor(nTemp)
   903                             if dbIdx[nIdx] == 0 then
   904                                 return
   905                             elseif event.target.color.r == 240 and event.target.color.g == 230 and event.target.color.b == 140 then
   906                                 event.target.color = color.lightGrey
   907                                 dbMrk[nIdx] = 0
   908                             elseif event.target.color.r == 220 and event.target.color.g == 210 and event.target.color.b == 120 then
   909                                 event.target.color = {192, 192, 192}
   910                                 dbMrk[nIdx] = 0
   911                             elseif event.target.color.r == 192 and event.target.color.g == 192 and event.target.color.b == 192 then
   912                                 event.target.color = {220, 210, 120}
   913                                 dbMrk[nIdx] = dbIdx[nIdx]
   914                             else
   915                                 event.target.color = color.khaki
   916                                 dbMrk[nIdx] = dbIdx[nIdx]
   917                             end
   918                         end
   919                         if event.phase == 'ended' then
   920                             if math.abs(event.y - posMove) > fontarial.height*1.5 then
   921                                 -- Provide callback to count rows in table
   922                                 local nCount = 0
   923                                 function countrows(udata, cols, values, names)
   924                                     assert(udata == 'dingdong')
   925                                     nCount = tonumber(values[1])
   926                                     return 0
   927                                 end
   929                                 -- Repopulate UI conditionally
   930                                 debe = sqlite3.open(pathStor .. 'amalog.sql')
   931                                 local nRet = debe:exec('SELECT Count(*) FROM qsos', countrows, 'dingdong')
   932                                 debe:close()
   933                                 debe = nil
   935                                 if event.y - posMove > 0 then  -- Gesture upward
   936                                     if nScroll + 7 < nCount then
   937                                         nScroll = nScroll + 7
   938                                     else
   939                                         return
   940                                     end
   941                                 else -- Gesture downward
   942                                     if nScroll - 7 >= 0 then
   943                                         nScroll = nScroll - 7
   944                                     else
   945                                         return
   946                                     end
   947                                 end
   949                                 -- Kludge stucked event handlers
   950                                 rectoddy:removeEventListener('touch', rectoddy)
   951                                 recteven:removeEventListener('touch', recteven)
   952                                 recthree:removeEventListener('touch', recthree)
   953                                 rectfour:removeEventListener('touch', rectfour)
   954                                 rectfive:removeEventListener('touch', rectfive)
   955                                 rectseis:removeEventListener('touch', rectseis)
   956                                 rectsieb:removeEventListener('touch', rectsieb)
   958                                 -- Clear viewport
   959                                 for nIter = 0, 6 do
   960                                     local rectfresh = director:createRectangle(0, (dsh - fontarial.height * 3 - nIter * fontarial.height * 1.5), dsw, fontarial.height * 1.5)
   962                                     function rectfresh:touch(event)
   963                                         if event.phase == 'began' then
   964                                             posMove = event.y
   965                                             local nBase = event.y - (dsh - fontarial.height * 12)
   966                                             local nRect = fontarial.height * 1.5
   967                                             local nTemp = nBase / nRect
   968                                             local nIdx  = 7 - math.floor(nTemp)
   969                                             if dbIdx[nIdx] == 0 then
   970                                                 return
   971                                             elseif event.target.color.r == 240 and event.target.color.g == 230 and event.target.color.b == 140 then
   972                                                 event.target.color = color.lightGrey
   973                                                 dbMrk[nIdx] = 0
   974                                             elseif event.target.color.r == 220 and event.target.color.g == 210 and event.target.color.b == 120 then
   975                                                 event.target.color = {192, 192, 192}
   976                                                 dbMrk[nIdx] = 0
   977                                             elseif event.target.color.r == 192 and event.target.color.g == 192 and event.target.color.b == 192 then
   978                                                 event.target.color = {220, 210, 120}
   979                                                 dbMrk[nIdx] = dbIdx[nIdx]
   980                                             else
   981                                                 event.target.color = color.khaki
   982                                                 dbMrk[nIdx] = dbIdx[nIdx]
   983                                             end
   984                                         end
   985                                     end
   986                                     rectfresh:addEventListener('touch', rectfresh)
   988                                     if nIter % 2 == 0 then
   989                                         rectfresh.color = color.lightGrey
   990                                     else
   991                                         rectfresh.color = {192, 192, 192}
   992                                     end
   994                                     -- Clear indexes
   995                                     dbIdx[nIter+1] = 0
   996                                     dbMrk[nIter+1] = 0
   997                                 end
   999                                 -- Redraw labels
  1000                                 local nIter = 6
  1001                                 --for nIter = 0, 7 do
  1002                                 local nTemp = nCount - nScroll
  1003                                 if nTemp < 7 then
  1004                                     nIter = nTemp - 1
  1005                                 end
  1007                                 debe = sqlite3.open(pathStor .. 'amalog.sql')
  1008                                 for dbRows in debe:nrows('SELECT * FROM qsos') do
  1009                                     if nTemp < 8 then
  1010                                         if nTemp < 0 then break end
  1011                                         if nIter < 0 then break end
  1012                                         local labrepop = director:createLabel({
  1013                                             x=fontsegoe.height/2, y=dsh-fontarial.height*(3+nIter*1.5) + (fontsegoe.height/3),
  1014                                             hAlignment='left', vAlignment='bottom',
  1015                                             font=fontsegoe,
  1016                                             text=dbRows['call']
  1017                                         })
  1018                                         dbIdx[nIter+1] = dbRows['id']
  1019                                         nIter = nIter - 1
  1020                                         nTemp = nTemp - 1
  1021                                     else
  1022                                         nTemp = nTemp - 1
  1023                                     end
  1024                                 end
  1025                                 debe:close()
  1026                                 debe = nil
  1027                             end
  1028                             posMove = 0
  1029                         end
  1030                     end
  1031                     rectfresh:addEventListener('touch', rectfresh)
  1033                     if nIter % 2 == 0 then
  1034                         rectfresh.color = color.lightGrey
  1035                     else
  1036                         rectfresh.color = {192, 192, 192}
  1037                     end
  1039                     -- Clear indexes
  1040                     dbIdx[nIter+1] = 0
  1041                     dbMrk[nIter+1] = 0
  1042                 end
  1044                 -- Redraw labels
  1045                 local nIter = 6
  1046                 --for nIter = 0, 7 do
  1047                 local nTemp = nCount - nScroll
  1048                 if nTemp < 7 then
  1049                     nIter = nTemp - 1
  1050                 end
  1052                 debe = sqlite3.open(pathStor .. 'amalog.sql')
  1053                 for dbRows in debe:nrows('SELECT * FROM qsos') do
  1054                     if nTemp < 8 then
  1055                         if nTemp < 0 then break end
  1056                         if nIter < 0 then break end
  1057                         local labrepop = director:createLabel({
  1058                             x=fontsegoe.height/2, y=dsh-fontarial.height*(3+nIter*1.5) + (fontsegoe.height/3),
  1059                             hAlignment='left', vAlignment='bottom',
  1060                             font=fontsegoe,
  1061                             text=dbRows['call']
  1062                         })
  1063                         dbIdx[nIter+1] = dbRows['id']
  1064                         nIter = nIter - 1
  1065                         nTemp = nTemp - 1
  1066                     else
  1067                         nTemp = nTemp - 1
  1068                     end
  1069                 end
  1070                 debe:close()
  1071                 debe = nil
  1072             end
  1073             posMove = 0
  1074         end
  1075     end
  1076     rectfour:addEventListener('touch', rectfour)
  1078     function rectfive:touch(event)
  1079         if event.phase == 'began' then
  1080             posMove = event.y
  1081             local nBase = event.y - (dsh - fontarial.height * 12)
  1082             local nRect = fontarial.height * 1.5
  1083             local nTemp = nBase / nRect
  1084             local nIdx  = 7 - math.floor(nTemp)
  1085             if dbIdx[nIdx] == 0 then
  1086                 return
  1087             elseif rectfive.color.r == 240 and rectfive.color.g == 230 and rectfive.color.b == 140 then
  1088                 rectfive.color = color.lightGrey
  1089                 dbMrk[nIdx] = 0
  1090             else
  1091                 rectfive.color = color.khaki
  1092                 dbMrk[nIdx] = dbIdx[nIdx]
  1093             end
  1094         end
  1096         if event.phase == 'ended' then
  1097             if math.abs(event.y - posMove) > fontarial.height*1.5 then
  1098                 -- Provide callback to count rows in table
  1099                 local nCount = 0
  1100                 function countrows(udata, cols, values, names)
  1101                     assert(udata == 'dingdong')
  1102                     nCount = tonumber(values[1])
  1103                     return 0
  1104                 end
  1106                 -- Repopulate UI conditionally
  1107                 debe = sqlite3.open(pathStor .. 'amalog.sql')
  1108                 local nRet = debe:exec('SELECT Count(*) FROM qsos', countrows, 'dingdong')
  1109                 debe:close()
  1110                 debe = nil
  1112                 if event.y - posMove > 0 then  -- Gesture upward
  1113                     if nScroll + 7 < nCount then
  1114                         nScroll = nScroll + 7
  1115                     else
  1116                         return
  1117                     end
  1118                 else -- Gesture downward
  1119                     if nScroll - 7 >= 0 then
  1120                         nScroll = nScroll - 7
  1121                     else
  1122                         return
  1123                     end
  1124                 end
  1126                 -- Kludge stucked event handlers
  1127                 rectoddy:removeEventListener('touch', rectoddy)
  1128                 recteven:removeEventListener('touch', recteven)
  1129                 recthree:removeEventListener('touch', recthree)
  1130                 rectfour:removeEventListener('touch', rectfour)
  1131                 rectfive:removeEventListener('touch', rectfive)
  1132                 rectseis:removeEventListener('touch', rectseis)
  1133                 rectsieb:removeEventListener('touch', rectsieb)
  1135                 -- Clear viewport
  1136                 for nIter = 0, 6 do
  1137                     local rectfresh = director:createRectangle(0, (dsh - fontarial.height * 3 - nIter * fontarial.height * 1.5), dsw, fontarial.height * 1.5)
  1139                     function rectfresh:touch(event)
  1140                         if event.phase == 'began' then
  1141                             posMove = event.y
  1142                             local nBase = event.y - (dsh - fontarial.height * 12)
  1143                             local nRect = fontarial.height * 1.5
  1144                             local nTemp = nBase / nRect
  1145                             local nIdx  = 7 - math.floor(nTemp)
  1146                             if dbIdx[nIdx] == 0 then
  1147                                 return
  1148                             elseif event.target.color.r == 240 and event.target.color.g == 230 and event.target.color.b == 140 then
  1149                                 event.target.color = color.lightGrey
  1150                                 dbMrk[nIdx] = 0
  1151                             elseif event.target.color.r == 220 and event.target.color.g == 210 and event.target.color.b == 120 then
  1152                                 event.target.color = {192, 192, 192}
  1153                                 dbMrk[nIdx] = 0
  1154                             elseif event.target.color.r == 192 and event.target.color.g == 192 and event.target.color.b == 192 then
  1155                                 event.target.color = {220, 210, 120}
  1156                                 dbMrk[nIdx] = dbIdx[nIdx]
  1157                             else
  1158                                 event.target.color = color.khaki
  1159                                 dbMrk[nIdx] = dbIdx[nIdx]
  1160                             end
  1161                         end
  1162                         if event.phase == 'ended' then
  1163                             if math.abs(event.y - posMove) > fontarial.height*1.5 then
  1164                                 -- Provide callback to count rows in table
  1165                                 local nCount = 0
  1166                                 function countrows(udata, cols, values, names)
  1167                                     assert(udata == 'dingdong')
  1168                                     nCount = tonumber(values[1])
  1169                                     return 0
  1170                                 end
  1172                                 -- Repopulate UI conditionally
  1173                                 debe = sqlite3.open(pathStor .. 'amalog.sql')
  1174                                 local nRet = debe:exec('SELECT Count(*) FROM qsos', countrows, 'dingdong')
  1175                                 debe:close()
  1176                                 debe = nil
  1178                                 if event.y - posMove > 0 then  -- Gesture upward
  1179                                     if nScroll + 7 < nCount then
  1180                                         nScroll = nScroll + 7
  1181                                     else
  1182                                         return
  1183                                     end
  1184                                 else -- Gesture downward
  1185                                     if nScroll - 7 >= 0 then
  1186                                         nScroll = nScroll - 7
  1187                                     else
  1188                                         return
  1189                                     end
  1190                                 end
  1192                                 -- Kludge stucked event handlers
  1193                                 rectoddy:removeEventListener('touch', rectoddy)
  1194                                 recteven:removeEventListener('touch', recteven)
  1195                                 recthree:removeEventListener('touch', recthree)
  1196                                 rectfour:removeEventListener('touch', rectfour)
  1197                                 rectfive:removeEventListener('touch', rectfive)
  1198                                 rectseis:removeEventListener('touch', rectseis)
  1199                                 rectsieb:removeEventListener('touch', rectsieb)
  1201                                 -- Clear viewport
  1202                                 for nIter = 0, 6 do
  1203                                     local rectfresh = director:createRectangle(0, (dsh - fontarial.height * 3 - nIter * fontarial.height * 1.5), dsw, fontarial.height * 1.5)
  1205                                     function rectfresh:touch(event)
  1206                                         if event.phase == 'began' then
  1207                                             posMove = event.y
  1208                                             local nBase = event.y - (dsh - fontarial.height * 12)
  1209                                             local nRect = fontarial.height * 1.5
  1210                                             local nTemp = nBase / nRect
  1211                                             local nIdx  = 7 - math.floor(nTemp)
  1212                                             if dbIdx[nIdx] == 0 then
  1213                                                 return
  1214                                             elseif event.target.color.r == 240 and event.target.color.g == 230 and event.target.color.b == 140 then
  1215                                                 event.target.color = color.lightGrey
  1216                                                 dbMrk[nIdx] = 0
  1217                                             elseif event.target.color.r == 220 and event.target.color.g == 210 and event.target.color.b == 120 then
  1218                                                 event.target.color = {192, 192, 192}
  1219                                                 dbMrk[nIdx] = 0
  1220                                             elseif event.target.color.r == 192 and event.target.color.g == 192 and event.target.color.b == 192 then
  1221                                                 event.target.color = {220, 210, 120}
  1222                                                 dbMrk[nIdx] = dbIdx[nIdx]
  1223                                             else
  1224                                                 event.target.color = color.khaki
  1225                                                 dbMrk[nIdx] = dbIdx[nIdx]
  1226                                             end
  1227                                         end
  1228                                     end
  1229                                     rectfresh:addEventListener('touch', rectfresh)
  1231                                     if nIter % 2 == 0 then
  1232                                         rectfresh.color = color.lightGrey
  1233                                     else
  1234                                         rectfresh.color = {192, 192, 192}
  1235                                     end
  1237                                     -- Clear indexes
  1238                                     dbIdx[nIter+1] = 0
  1239                                     dbMrk[nIter+1] = 0
  1240                                 end
  1242                                 -- Redraw labels
  1243                                 local nIter = 6
  1244                                 --for nIter = 0, 7 do
  1245                                 local nTemp = nCount - nScroll
  1246                                 if nTemp < 7 then
  1247                                     nIter = nTemp - 1
  1248                                 end
  1250                                 debe = sqlite3.open(pathStor .. 'amalog.sql')
  1251                                 for dbRows in debe:nrows('SELECT * FROM qsos') do
  1252                                     if nTemp < 8 then
  1253                                         if nTemp < 0 then break end
  1254                                         if nIter < 0 then break end
  1255                                         local labrepop = director:createLabel({
  1256                                             x=fontsegoe.height/2, y=dsh-fontarial.height*(3+nIter*1.5) + (fontsegoe.height/3),
  1257                                             hAlignment='left', vAlignment='bottom',
  1258                                             font=fontsegoe,
  1259                                             text=dbRows['call']
  1260                                         })
  1261                                         dbIdx[nIter+1] = dbRows['id']
  1262                                         nIter = nIter - 1
  1263                                         nTemp = nTemp - 1
  1264                                     else
  1265                                         nTemp = nTemp - 1
  1266                                     end
  1267                                 end
  1268                                 debe:close()
  1269                                 debe = nil
  1270                             end
  1271                             posMove = 0
  1272                         end
  1273                     end
  1274                     rectfresh:addEventListener('touch', rectfresh)
  1276                     if nIter % 2 == 0 then
  1277                         rectfresh.color = color.lightGrey
  1278                     else
  1279                         rectfresh.color = {192, 192, 192}
  1280                     end
  1282                     -- Clear indexes
  1283                     dbIdx[nIter+1] = 0
  1284                     dbMrk[nIter+1] = 0
  1285                 end
  1287                 -- Redraw labels
  1288                 local nIter = 6
  1289                 --for nIter = 0, 7 do
  1290                 local nTemp = nCount - nScroll
  1291                 if nTemp < 7 then
  1292                     nIter = nTemp - 1
  1293                 end
  1295                 debe = sqlite3.open(pathStor .. 'amalog.sql')
  1296                 for dbRows in debe:nrows('SELECT * FROM qsos') do
  1297                     if nTemp < 8 then
  1298                         if nTemp < 0 then break end
  1299                         if nIter < 0 then break end
  1300                         local labrepop = director:createLabel({
  1301                             x=fontsegoe.height/2, y=dsh-fontarial.height*(3+nIter*1.5) + (fontsegoe.height/3),
  1302                             hAlignment='left', vAlignment='bottom',
  1303                             font=fontsegoe,
  1304                             text=dbRows['call']
  1305                         })
  1306                         dbIdx[nIter+1] = dbRows['id']
  1307                         nIter = nIter - 1
  1308                         nTemp = nTemp - 1
  1309                     else
  1310                         nTemp = nTemp - 1
  1311                     end
  1312                 end
  1313                 debe:close()
  1314                 debe = nil
  1315             end
  1316             posMove = 0
  1317         end
  1318     end
  1319     rectfive:addEventListener('touch', rectfive)
  1321     function rectseis:touch(event)
  1322         if event.phase == 'began' then
  1323             posMove = event.y
  1324             local nBase = event.y - (dsh - fontarial.height * 12)
  1325             local nRect = fontarial.height * 1.5
  1326             local nTemp = nBase / nRect
  1327             local nIdx  = 7 - math.floor(nTemp)
  1328             if dbIdx[nIdx] == 0 then
  1329                 return
  1330             elseif rectseis.color.r == 220 and rectseis.color.g == 210 and rectseis.color.b == 120 then
  1331                 rectseis.color = {192, 192, 192}
  1332                 dbMrk[nIdx] = 0
  1333             else
  1334                 rectseis.color = {220, 210, 120}
  1335                 dbMrk[nIdx] = dbIdx[nIdx]
  1336             end
  1337         end
  1339         if event.phase == 'ended' then
  1340             if math.abs(event.y - posMove) > fontarial.height*1.5 then
  1341                 -- Provide callback to count rows in table
  1342                 local nCount = 0
  1343                 function countrows(udata, cols, values, names)
  1344                     assert(udata == 'dingdong')
  1345                     nCount = tonumber(values[1])
  1346                     return 0
  1347                 end
  1349                 -- Repopulate UI conditionally
  1350                 debe = sqlite3.open(pathStor .. 'amalog.sql')
  1351                 local nRet = debe:exec('SELECT Count(*) FROM qsos', countrows, 'dingdong')
  1352                 debe:close()
  1353                 debe = nil
  1355                 if event.y - posMove > 0 then  -- Gesture upward
  1356                     if nScroll + 7 < nCount then
  1357                         nScroll = nScroll + 7
  1358                     else
  1359                         return
  1360                     end
  1361                 else -- Gesture downward
  1362                     if nScroll - 7 >= 0 then
  1363                         nScroll = nScroll - 7
  1364                     else
  1365                         return
  1366                     end
  1367                 end
  1369                 -- Kludge stucked event handlers
  1370                 rectoddy:removeEventListener('touch', rectoddy)
  1371                 recteven:removeEventListener('touch', recteven)
  1372                 recthree:removeEventListener('touch', recthree)
  1373                 rectfour:removeEventListener('touch', rectfour)
  1374                 rectfive:removeEventListener('touch', rectfive)
  1375                 rectseis:removeEventListener('touch', rectseis)
  1376                 rectsieb:removeEventListener('touch', rectsieb)
  1378                 -- Clear viewport
  1379                 for nIter = 0, 6 do
  1380                     local rectfresh = director:createRectangle(0, (dsh - fontarial.height * 3 - nIter * fontarial.height * 1.5), dsw, fontarial.height * 1.5)
  1382                     function rectfresh:touch(event)
  1383                         if event.phase == 'began' then
  1384                             posMove = event.y
  1385                             local nBase = event.y - (dsh - fontarial.height * 12)
  1386                             local nRect = fontarial.height * 1.5
  1387                             local nTemp = nBase / nRect
  1388                             local nIdx  = 7 - math.floor(nTemp)
  1389                             if dbIdx[nIdx] == 0 then
  1390                                 return
  1391                             elseif event.target.color.r == 240 and event.target.color.g == 230 and event.target.color.b == 140 then
  1392                                 event.target.color = color.lightGrey
  1393                                 dbMrk[nIdx] = 0
  1394                             elseif event.target.color.r == 220 and event.target.color.g == 210 and event.target.color.b == 120 then
  1395                                 event.target.color = {192, 192, 192}
  1396                                 dbMrk[nIdx] = 0
  1397                             elseif event.target.color.r == 192 and event.target.color.g == 192 and event.target.color.b == 192 then
  1398                                 event.target.color = {220, 210, 120}
  1399                                 dbMrk[nIdx] = dbIdx[nIdx]
  1400                             else
  1401                                 event.target.color = color.khaki
  1402                                 dbMrk[nIdx] = dbIdx[nIdx]
  1403                             end
  1404                         end
  1405                         if event.phase == 'ended' then
  1406                             if math.abs(event.y - posMove) > fontarial.height*1.5 then
  1407                                 -- Provide callback to count rows in table
  1408                                 local nCount = 0
  1409                                 function countrows(udata, cols, values, names)
  1410                                     assert(udata == 'dingdong')
  1411                                     nCount = tonumber(values[1])
  1412                                     return 0
  1413                                 end
  1415                                 -- Repopulate UI conditionally
  1416                                 debe = sqlite3.open(pathStor .. 'amalog.sql')
  1417                                 local nRet = debe:exec('SELECT Count(*) FROM qsos', countrows, 'dingdong')
  1418                                 debe:close()
  1419                                 debe = nil
  1421                                 if event.y - posMove > 0 then  -- Gesture upward
  1422                                     if nScroll + 7 < nCount then
  1423                                         nScroll = nScroll + 7
  1424                                     else
  1425                                         return
  1426                                     end
  1427                                 else -- Gesture downward
  1428                                     if nScroll - 7 >= 0 then
  1429                                         nScroll = nScroll - 7
  1430                                     else
  1431                                         return
  1432                                     end
  1433                                 end
  1435                                 -- Kludge stucked event handlers
  1436                                 rectoddy:removeEventListener('touch', rectoddy)
  1437                                 recteven:removeEventListener('touch', recteven)
  1438                                 recthree:removeEventListener('touch', recthree)
  1439                                 rectfour:removeEventListener('touch', rectfour)
  1440                                 rectfive:removeEventListener('touch', rectfive)
  1441                                 rectseis:removeEventListener('touch', rectseis)
  1442                                 rectsieb:removeEventListener('touch', rectsieb)
  1444                                 -- Clear viewport
  1445                                 for nIter = 0, 6 do
  1446                                     local rectfresh = director:createRectangle(0, (dsh - fontarial.height * 3 - nIter * fontarial.height * 1.5), dsw, fontarial.height * 1.5)
  1448                                     function rectfresh:touch(event)
  1449                                         if event.phase == 'began' then
  1450                                             posMove = event.y
  1451                                             local nBase = event.y - (dsh - fontarial.height * 12)
  1452                                             local nRect = fontarial.height * 1.5
  1453                                             local nTemp = nBase / nRect
  1454                                             local nIdx  = 7 - math.floor(nTemp)
  1455                                             if dbIdx[nIdx] == 0 then
  1456                                                 return
  1457                                             elseif event.target.color.r == 240 and event.target.color.g == 230 and event.target.color.b == 140 then
  1458                                                 event.target.color = color.lightGrey
  1459                                                 dbMrk[nIdx] = 0
  1460                                             elseif event.target.color.r == 220 and event.target.color.g == 210 and event.target.color.b == 120 then
  1461                                                 event.target.color = {192, 192, 192}
  1462                                                 dbMrk[nIdx] = 0
  1463                                             elseif event.target.color.r == 192 and event.target.color.g == 192 and event.target.color.b == 192 then
  1464                                                 event.target.color = {220, 210, 120}
  1465                                                 dbMrk[nIdx] = dbIdx[nIdx]
  1466                                             else
  1467                                                 event.target.color = color.khaki
  1468                                                 dbMrk[nIdx] = dbIdx[nIdx]
  1469                                             end
  1470                                         end
  1471                                     end
  1472                                     rectfresh:addEventListener('touch', rectfresh)
  1474                                     if nIter % 2 == 0 then
  1475                                         rectfresh.color = color.lightGrey
  1476                                     else
  1477                                         rectfresh.color = {192, 192, 192}
  1478                                     end
  1480                                     -- Clear indexes
  1481                                     dbIdx[nIter+1] = 0
  1482                                     dbMrk[nIter+1] = 0
  1483                                 end
  1485                                 -- Redraw labels
  1486                                 local nIter = 6
  1487                                 --for nIter = 0, 7 do
  1488                                 local nTemp = nCount - nScroll
  1489                                 if nTemp < 7 then
  1490                                     nIter = nTemp - 1
  1491                                 end
  1493                                 debe = sqlite3.open(pathStor .. 'amalog.sql')
  1494                                 for dbRows in debe:nrows('SELECT * FROM qsos') do
  1495                                     if nTemp < 8 then
  1496                                         if nTemp < 0 then break end
  1497                                         if nIter < 0 then break end
  1498                                         local labrepop = director:createLabel({
  1499                                             x=fontsegoe.height/2, y=dsh-fontarial.height*(3+nIter*1.5) + (fontsegoe.height/3),
  1500                                             hAlignment='left', vAlignment='bottom',
  1501                                             font=fontsegoe,
  1502                                             text=dbRows['call']
  1503                                         })
  1504                                         dbIdx[nIter+1] = dbRows['id']
  1505                                         nIter = nIter - 1
  1506                                         nTemp = nTemp - 1
  1507                                     else
  1508                                         nTemp = nTemp - 1
  1509                                     end
  1510                                 end
  1511                                 debe:close()
  1512                                 debe = nil
  1513                             end
  1514                             posMove = 0
  1515                         end
  1516                     end
  1517                     rectfresh:addEventListener('touch', rectfresh)
  1519                     if nIter % 2 == 0 then
  1520                         rectfresh.color = color.lightGrey
  1521                     else
  1522                         rectfresh.color = {192, 192, 192}
  1523                     end
  1525                     -- Clear indexes
  1526                     dbIdx[nIter+1] = 0
  1527                     dbMrk[nIter+1] = 0
  1528                 end
  1530                 -- Redraw labels
  1531                 local nIter = 6
  1532                 --for nIter = 0, 7 do
  1533                 local nTemp = nCount - nScroll
  1534                 if nTemp < 7 then
  1535                     nIter = nTemp - 1
  1536                 end
  1538                 debe = sqlite3.open(pathStor .. 'amalog.sql')
  1539                 for dbRows in debe:nrows('SELECT * FROM qsos') do
  1540                     if nTemp < 8 then
  1541                         if nTemp < 0 then break end
  1542                         if nIter < 0 then break end
  1543                         local labrepop = director:createLabel({
  1544                             x=fontsegoe.height/2, y=dsh-fontarial.height*(3+nIter*1.5) + (fontsegoe.height/3),
  1545                             hAlignment='left', vAlignment='bottom',
  1546                             font=fontsegoe,
  1547                             text=dbRows['call']
  1548                         })
  1549                         dbIdx[nIter+1] = dbRows['id']
  1550                         nIter = nIter - 1
  1551                         nTemp = nTemp - 1
  1552                     else
  1553                         nTemp = nTemp - 1
  1554                     end
  1555                 end
  1556                 debe:close()
  1557                 debe = nil
  1558             end
  1559             posMove = 0
  1560         end
  1561     end
  1562     rectseis:addEventListener('touch', rectseis)
  1564     function rectsieb:touch(event)
  1565         if event.phase == 'began' then
  1566             posMove = event.y
  1567             local nBase = event.y - (dsh - fontarial.height * 12)
  1568             local nRect = fontarial.height * 1.5
  1569             local nTemp = nBase / nRect
  1570             local nIdx  = 7 - math.floor(nTemp)
  1571             if dbIdx[nIdx] == 0 then
  1572                 return
  1573             elseif rectsieb.color.r == 240 and rectsieb.color.g == 230 and rectsieb.color.b == 140 then
  1574                 rectsieb.color = color.lightGrey
  1575                 dbMrk[nIdx] = 0
  1576             else
  1577                 rectsieb.color = color.khaki
  1578                 dbMrk[nIdx] = dbIdx[nIdx]
  1579             end
  1580         end
  1582         if event.phase == 'ended' then
  1583             if math.abs(event.y - posMove) > fontarial.height*1.5 then
  1584                 -- Provide callback to count rows in table
  1585                 local nCount = 0
  1586                 function countrows(udata, cols, values, names)
  1587                     assert(udata == 'dingdong')
  1588                     nCount = tonumber(values[1])
  1589                     return 0
  1590                 end
  1592                 -- Repopulate UI conditionally
  1593                 debe = sqlite3.open(pathStor .. 'amalog.sql')
  1594                 local nRet = debe:exec('SELECT Count(*) FROM qsos', countrows, 'dingdong')
  1595                 debe:close()
  1596                 debe = nil
  1598                 if event.y - posMove > 0 then  -- Gesture upward
  1599                     if nScroll + 7 < nCount then
  1600                         nScroll = nScroll + 7
  1601                     else
  1602                         return
  1603                     end
  1604                 else -- Gesture downward
  1605                     if nScroll - 7 >= 0 then
  1606                         nScroll = nScroll - 7
  1607                     else
  1608                         return
  1609                     end
  1610                 end
  1612                 -- Kludge stucked event handlers
  1613                 rectoddy:removeEventListener('touch', rectoddy)
  1614                 recteven:removeEventListener('touch', recteven)
  1615                 recthree:removeEventListener('touch', recthree)
  1616                 rectfour:removeEventListener('touch', rectfour)
  1617                 rectfive:removeEventListener('touch', rectfive)
  1618                 rectseis:removeEventListener('touch', rectseis)
  1619                 rectsieb:removeEventListener('touch', rectsieb)
  1621                 -- Clear viewport
  1622                 for nIter = 0, 6 do
  1623                     local rectfresh = director:createRectangle(0, (dsh - fontarial.height * 3 - nIter * fontarial.height * 1.5), dsw, fontarial.height * 1.5)
  1625                     function rectfresh:touch(event)
  1626                         if event.phase == 'began' then
  1627                             posMove = event.y
  1628                             local nBase = event.y - (dsh - fontarial.height * 12)
  1629                             local nRect = fontarial.height * 1.5
  1630                             local nTemp = nBase / nRect
  1631                             local nIdx  = 7 - math.floor(nTemp)
  1632                             if dbIdx[nIdx] == 0 then
  1633                                 return
  1634                             elseif event.target.color.r == 240 and event.target.color.g == 230 and event.target.color.b == 140 then
  1635                                 event.target.color = color.lightGrey
  1636                                 dbMrk[nIdx] = 0
  1637                             elseif event.target.color.r == 220 and event.target.color.g == 210 and event.target.color.b == 120 then
  1638                                 event.target.color = {192, 192, 192}
  1639                                 dbMrk[nIdx] = 0
  1640                             elseif event.target.color.r == 192 and event.target.color.g == 192 and event.target.color.b == 192 then
  1641                                 event.target.color = {220, 210, 120}
  1642                                 dbMrk[nIdx] = dbIdx[nIdx]
  1643                             else
  1644                                 event.target.color = color.khaki
  1645                                 dbMrk[nIdx] = dbIdx[nIdx]
  1646                             end
  1647                         end
  1648                         if event.phase == 'ended' then
  1649                             if math.abs(event.y - posMove) > fontarial.height*1.5 then
  1650                                 -- Provide callback to count rows in table
  1651                                 local nCount = 0
  1652                                 function countrows(udata, cols, values, names)
  1653                                     assert(udata == 'dingdong')
  1654                                     nCount = tonumber(values[1])
  1655                                     return 0
  1656                                 end
  1658                                 -- Repopulate UI conditionally
  1659                                 debe = sqlite3.open(pathStor .. 'amalog.sql')
  1660                                 local nRet = debe:exec('SELECT Count(*) FROM qsos', countrows, 'dingdong')
  1661                                 debe:close()
  1662                                 debe = nil
  1664                                 if event.y - posMove > 0 then  -- Gesture upward
  1665                                     if nScroll + 7 < nCount then
  1666                                         nScroll = nScroll + 7
  1667                                     else
  1668                                         return
  1669                                     end
  1670                                 else -- Gesture downward
  1671                                     if nScroll - 7 >= 0 then
  1672                                         nScroll = nScroll - 7
  1673                                     else
  1674                                         return
  1675                                     end
  1676                                 end
  1678                                 -- Kludge stucked event handlers
  1679                                 rectoddy:removeEventListener('touch', rectoddy)
  1680                                 recteven:removeEventListener('touch', recteven)
  1681                                 recthree:removeEventListener('touch', recthree)
  1682                                 rectfour:removeEventListener('touch', rectfour)
  1683                                 rectfive:removeEventListener('touch', rectfive)
  1684                                 rectseis:removeEventListener('touch', rectseis)
  1685                                 rectsieb:removeEventListener('touch', rectsieb)
  1687                                 -- Clear viewport
  1688                                 for nIter = 0, 6 do
  1689                                     local rectfresh = director:createRectangle(0, (dsh - fontarial.height * 3 - nIter * fontarial.height * 1.5), dsw, fontarial.height * 1.5)
  1691                                     function rectfresh:touch(event)
  1692                                         if event.phase == 'began' then
  1693                                             posMove = event.y
  1694                                             local nBase = event.y - (dsh - fontarial.height * 12)
  1695                                             local nRect = fontarial.height * 1.5
  1696                                             local nTemp = nBase / nRect
  1697                                             local nIdx  = 7 - math.floor(nTemp)
  1698                                             if dbIdx[nIdx] == 0 then
  1699                                                 return
  1700                                             elseif event.target.color.r == 240 and event.target.color.g == 230 and event.target.color.b == 140 then
  1701                                                 event.target.color = color.lightGrey
  1702                                                 dbMrk[nIdx] = 0
  1703                                             elseif event.target.color.r == 220 and event.target.color.g == 210 and event.target.color.b == 120 then
  1704                                                 event.target.color = {192, 192, 192}
  1705                                                 dbMrk[nIdx] = 0
  1706                                             elseif event.target.color.r == 192 and event.target.color.g == 192 and event.target.color.b == 192 then
  1707                                                 event.target.color = {220, 210, 120}
  1708                                                 dbMrk[nIdx] = dbIdx[nIdx]
  1709                                             else
  1710                                                 event.target.color = color.khaki
  1711                                                 dbMrk[nIdx] = dbIdx[nIdx]
  1712                                             end
  1713                                         end
  1714                                     end
  1715                                     rectfresh:addEventListener('touch', rectfresh)
  1717                                     if nIter % 2 == 0 then
  1718                                         rectfresh.color = color.lightGrey
  1719                                     else
  1720                                         rectfresh.color = {192, 192, 192}
  1721                                     end
  1723                                     -- Clear indexes
  1724                                     dbIdx[nIter+1] = 0
  1725                                     dbMrk[nIter+1] = 0
  1726                                 end
  1728                                 -- Redraw labels
  1729                                 local nIter = 6
  1730                                 --for nIter = 0, 7 do
  1731                                 local nTemp = nCount - nScroll
  1732                                 if nTemp < 7 then
  1733                                     nIter = nTemp - 1
  1734                                 end
  1736                                 debe = sqlite3.open(pathStor .. 'amalog.sql')
  1737                                 for dbRows in debe:nrows('SELECT * FROM qsos') do
  1738                                     if nTemp < 8 then
  1739                                         if nTemp < 0 then break end
  1740                                         if nIter < 0 then break end
  1741                                         local labrepop = director:createLabel({
  1742                                             x=fontsegoe.height/2, y=dsh-fontarial.height*(3+nIter*1.5) + (fontsegoe.height/3),
  1743                                             hAlignment='left', vAlignment='bottom',
  1744                                             font=fontsegoe,
  1745                                             text=dbRows['call']
  1746                                         })
  1747                                         dbIdx[nIter+1] = dbRows['id']
  1748                                         nIter = nIter - 1
  1749                                         nTemp = nTemp - 1
  1750                                     else
  1751                                         nTemp = nTemp - 1
  1752                                     end
  1753                                 end
  1754                                 debe:close()
  1755                                 debe = nil
  1756                             end
  1757                             posMove = 0
  1758                         end
  1759                     end
  1760                     rectfresh:addEventListener('touch', rectfresh)
  1762                     if nIter % 2 == 0 then
  1763                         rectfresh.color = color.lightGrey
  1764                     else
  1765                         rectfresh.color = {192, 192, 192}
  1766                     end
  1768                     -- Clear indexes
  1769                     dbIdx[nIter+1] = 0
  1770                     dbMrk[nIter+1] = 0
  1771                 end
  1773                 -- Redraw labels
  1774                 local nIter = 6
  1775                 --for nIter = 0, 7 do
  1776                 local nTemp = nCount - nScroll
  1777                 if nTemp < 7 then
  1778                     nIter = nTemp - 1
  1779                 end
  1781                 debe = sqlite3.open(pathStor .. 'amalog.sql')
  1782                 for dbRows in debe:nrows('SELECT * FROM qsos') do
  1783                     if nTemp < 8 then
  1784                         if nTemp < 0 then break end
  1785                         if nIter < 0 then break end
  1786                         local labrepop = director:createLabel({
  1787                             x=fontsegoe.height/2, y=dsh-fontarial.height*(3+nIter*1.5) + (fontsegoe.height/3),
  1788                             hAlignment='left', vAlignment='bottom',
  1789                             font=fontsegoe,
  1790                             text=dbRows['call']
  1791                         })
  1792                         dbIdx[nIter+1] = dbRows['id']
  1793                         nIter = nIter - 1
  1794                         nTemp = nTemp - 1
  1795                     else
  1796                         nTemp = nTemp - 1
  1797                     end
  1798                 end
  1799                 debe:close()
  1800                 debe = nil
  1801             end
  1802             posMove = 0
  1803         end
  1804     end
  1805     rectsieb:addEventListener('touch', rectsieb)
  1807     -- Provide callback to count rows in table
  1808     local nCount = 0
  1809     function countrows(udata, cols, values, names)
  1810         assert(udata == 'dingdong')
  1811         nCount = tonumber(values[1])
  1812         return 0
  1813     end
  1815     -- Populate UI
  1816     debe = sqlite3.open(pathStor .. 'amalog.sql')
  1817     local nRet = debe:exec('SELECT Count(*) FROM qsos', countrows, 'dingdong')
  1818     local nTemp = nCount
  1819     local nIter = 6;  --for nIter = 0, 7 do
  1820     if nTemp < 7 then
  1821         nIter = nTemp - 1
  1822     end
  1824     for dbRows in debe:nrows('SELECT * FROM qsos') do
  1825         if nTemp < 8 then
  1826             if nIter < 0 then break end
  1827             local rectfresh = director:createRectangle(0, (dsh - fontarial.height * 3 - nIter * fontarial.height * 1.5), dsw, fontarial.height * 1.5)
  1829             function rectfresh:touch(event)
  1830                 if event.phase == 'began' then
  1831                     posMove = event.y
  1832                     if event.target.color.r == 240 and event.target.color.g == 230 and event.target.color.b == 140 then
  1833                         event.target.color = color.lightGrey
  1834                     elseif event.target.color.r == 220 and event.target.color.g == 210 and event.target.color.b == 120 then
  1835                         event.target.color = {192, 192, 192}
  1836                     elseif event.target.color.r == 192 and event.target.color.g == 192 and event.target.color.b == 192 then
  1837                         event.target.color = {220, 210, 120}
  1838                     else
  1839                         event.target.color = color.khaki
  1840                     end
  1841                 end
  1842             end
  1843             rectfresh:addEventListener('touch', rectfresh)
  1845             if nIter % 2 == 0 then
  1846                 rectfresh.color = color.lightGrey
  1847             else
  1848                 rectfresh.color = {192, 192, 192}
  1849             end
  1851             local labpopo = director:createLabel({
  1852                 x=fontsegoe.height/2, y=dsh-fontarial.height*(3+nIter*1.5) + (fontsegoe.height/3),
  1853                 hAlignment='left', vAlignment='bottom',
  1854                 font=fontsegoe,
  1855                 text=dbRows['call']
  1856             })
  1857             dbIdx[nIter+1] = dbRows['id']
  1858             nIter = nIter - 1
  1859             nTemp = nTemp - 1
  1860         else
  1861             nTemp = nTemp - 1
  1862         end
  1863     end
  1864     debe:close()
  1865     debe = nil
  1867     local butdel = director:createSprite(0, 0, 'images/buttdel1.png')
  1868     local butadd = director:createSprite(0, 0, 'images/buttadd.png')
  1870     butdel.color = color.white
  1871     butdel.x = (dsw - butdel.w - butadd.w) / 3
  1872     butdel.y = (dsh-fontarial.height*12)/2
  1873     butdel.xAnchor = 0
  1874     butdel.yAnchor = 0.5
  1875     --butdel.xScale = 5
  1876     --butdel.yScale = 1.25
  1878     butadd.color = color.white
  1879     butadd.x = dsw-dsw/8
  1880     butadd.x = dsw - (dsw - butdel.w - butadd.w) / 3
  1881     butadd.y = (dsh-fontarial.height*12)/2
  1882     butadd.xAnchor = 1
  1883     butadd.yAnchor = 0.5
  1885     -- Good transitions: slideInL/R, shrinkGrow, crossFade, fadeTR/BL, pageTurn, progressVertical
  1886     --local transoptl = {transitionType = 'progressHorizontal', transitionTime = 0.5}
  1887     local transoptr = {transitionType = 'slideInR', transitionTime = 0.5}
  1889     function butabout:touch(event)
  1890         if event.phase == 'began' then
  1891             director:moveToScene(sceneAbout, transoptr)
  1892         end
  1893     end
  1894     butabout:addEventListener('touch', butabout)
  1896     function buthelp:touch(event)
  1897         if event.phase == 'began' then
  1898             director:moveToScene(sceneHelp, transoptr)
  1899         end
  1900     end
  1901     buthelp:addEventListener('touch', buthelp)
  1903     -- String reader events handler
  1904     function gotString(event)
  1905         if (event.type == 'error') then
  1906             dbg.print('Error reading string: ' .. event.text)
  1907         elseif (event.type == 'read') then
  1908             dbg.print('String read: ' .. event.text)
  1909         end
  1910     end
  1912     function butadd:touch(event)
  1913         if (event.phase == 'began') then
  1914             -- Ensure that the string reading extension is available
  1915             if nui:isReadStringAvailable() then
  1916                 -- Add a string reader event handler
  1917                 system:addEventListener('stringread', gotString)
  1919                 -- Create the string reader
  1920                 widginput = nui:readString('New QSO Entry', '', 'Call Sign, QTH, Notes...')
  1921                 if widginput then
  1922                     debe = sqlite3.open(pathStor .. 'amalog.sql')
  1923                     debe:exec('INSERT INTO qsos VALUES(NULL, \'' .. widginput .. '\')')
  1924                     --debe:exec[=[
  1925                     --    INSERT INTO qsos VALUES(NULL, widginput);
  1926                     --]=]
  1927                     debe:close()
  1928                     debe = nil
  1930                     -- Provide callback to count rows in table
  1931                     local nCount = 0
  1932                     function countrows(udata, cols, values, names)
  1933                         assert(udata == 'dingdong')
  1934                         nCount = tonumber(values[1])
  1935                         return 0
  1936                     end
  1938                     -- Repopulate UI
  1939                     debe = sqlite3.open(pathStor .. 'amalog.sql')
  1940                     local nRet = debe:exec('SELECT Count(*) FROM qsos', countrows, 'dingdong')
  1941                     local nIter = 6
  1942                     --for nIter = 0, 7 do
  1943                     local nTemp = nCount
  1944                     if nTemp < 7 then
  1945                         nIter = nTemp - 1
  1946                     end
  1948                     for dbRows in debe:nrows('SELECT * FROM qsos') do
  1949                         if nTemp < 8 then
  1950                             if nIter < 0 then break end
  1951                             local rectfresh = director:createRectangle(0, (dsh - fontarial.height * 3 - nIter * fontarial.height * 1.5), dsw, fontarial.height * 1.5)
  1953                             function rectfresh:touch(event)
  1954                                 if event.phase == 'began' then
  1955                                     if event.target.color.r == 240 and event.target.color.g == 230 and event.target.color.b == 140 then
  1956                                         event.target.color = color.lightGrey
  1957                                     elseif event.target.color.r == 220 and event.target.color.g == 210 and event.target.color.b == 120 then
  1958                                         event.target.color = {192, 192, 192}
  1959                                     elseif event.target.color.r == 192 and event.target.color.g == 192 and event.target.color.b == 192 then
  1960                                         event.target.color = {220, 210, 120}
  1961                                     else
  1962                                         event.target.color = color.khaki
  1963                                     end
  1964                                 end
  1965                             end
  1966                             rectfresh:addEventListener('touch', rectfresh)
  1968                             if nIter % 2 == 0 then
  1969                                 rectfresh.color = color.lightGrey
  1970                             else
  1971                                 rectfresh.color = {192, 192, 192}
  1972                             end
  1974                             local labrepop = director:createLabel({
  1975                                 x=fontsegoe.height/2, y=dsh-fontarial.height*(3+nIter*1.5) + (fontsegoe.height/3),
  1976                                 hAlignment='left', vAlignment='bottom',
  1977                                 font=fontsegoe,
  1978                                 text=dbRows['call']
  1979                             })
  1980                             dbIdx[nIter+1] = dbRows['id']
  1981                             nIter = nIter - 1
  1982                             nTemp = nTemp - 1
  1983                         else
  1984                             nTemp = nTemp - 1
  1985                         end
  1986                     end
  1987                     debe:close()
  1988                     debe = nil
  1989                 end
  1990             else
  1991                 dbg.print('String reading is not supported on this platform')
  1992             end
  1993         end
  1995         if event.phase == 'ended' then
  1996             if math.abs(event.y - posMove) > fontarial.height*1.5 then
  1997                 -- Provide callback to count rows in table
  1998                 local nCount = 0
  1999                 function countrows(udata, cols, values, names)
  2000                     assert(udata == 'dingdong')
  2001                     nCount = tonumber(values[1])
  2002                     return 0
  2003                 end
  2005                 -- Repopulate UI conditionally
  2006                 debe = sqlite3.open(pathStor .. 'amalog.sql')
  2007                 local nRet = debe:exec('SELECT Count(*) FROM qsos', countrows, 'dingdong')
  2008                 debe:close()
  2009                 debe = nil
  2011                 if event.y - posMove > 0 then  -- Gesture upward
  2012                     if nScroll + 7 < nCount then
  2013                         nScroll = nScroll + 7
  2014                     else
  2015                         return
  2016                     end
  2017                 else -- Gesture downward
  2018                     if nScroll - 7 >= 0 then
  2019                         nScroll = nScroll - 7
  2020                     else
  2021                         return
  2022                     end
  2023                 end
  2025                 -- Kludge stucked event handlers
  2026                 rectoddy:removeEventListener('touch', rectoddy)
  2027                 recteven:removeEventListener('touch', recteven)
  2028                 recthree:removeEventListener('touch', recthree)
  2029                 rectfour:removeEventListener('touch', rectfour)
  2030                 rectfive:removeEventListener('touch', rectfive)
  2031                 rectseis:removeEventListener('touch', rectseis)
  2032                 rectsieb:removeEventListener('touch', rectsieb)
  2034                 -- Clear viewport
  2035                 for nIter = 0, 6 do
  2036                     local rectfresh = director:createRectangle(0, (dsh - fontarial.height * 3 - nIter * fontarial.height * 1.5), dsw, fontarial.height * 1.5)
  2038                     function rectfresh:touch(event)
  2039                         if event.phase == 'began' then
  2040                             posMove = event.y
  2041                             local nBase = event.y - (dsh - fontarial.height * 12)
  2042                             local nRect = fontarial.height * 1.5
  2043                             local nTemp = nBase / nRect
  2044                             local nIdx  = 7 - math.floor(nTemp)
  2045                             if dbIdx[nIdx] == 0 then
  2046                                 return
  2047                             elseif event.target.color.r == 240 and event.target.color.g == 230 and event.target.color.b == 140 then
  2048                                 event.target.color = color.lightGrey
  2049                                 dbMrk[nIdx] = 0
  2050                             elseif event.target.color.r == 220 and event.target.color.g == 210 and event.target.color.b == 120 then
  2051                                 event.target.color = {192, 192, 192}
  2052                                 dbMrk[nIdx] = 0
  2053                             elseif event.target.color.r == 192 and event.target.color.g == 192 and event.target.color.b == 192 then
  2054                                 event.target.color = {220, 210, 120}
  2055                                 dbMrk[nIdx] = dbIdx[nIdx]
  2056                             else
  2057                                 event.target.color = color.khaki
  2058                                 dbMrk[nIdx] = dbIdx[nIdx]
  2059                             end
  2060                         end
  2061                         if event.phase == 'ended' then
  2062                             if math.abs(event.y - posMove) > fontarial.height*1.5 then
  2063                                 -- Provide callback to count rows in table
  2064                                 local nCount = 0
  2065                                 function countrows(udata, cols, values, names)
  2066                                     assert(udata == 'dingdong')
  2067                                     nCount = tonumber(values[1])
  2068                                     return 0
  2069                                 end
  2071                                 -- Repopulate UI conditionally
  2072                                 debe = sqlite3.open(pathStor .. 'amalog.sql')
  2073                                 local nRet = debe:exec('SELECT Count(*) FROM qsos', countrows, 'dingdong')
  2074                                 debe:close()
  2075                                 debe = nil
  2077                                 if event.y - posMove > 0 then  -- Gesture upward
  2078                                     if nScroll + 7 < nCount then
  2079                                         nScroll = nScroll + 7
  2080                                     else
  2081                                         return
  2082                                     end
  2083                                 else -- Gesture downward
  2084                                     if nScroll - 7 >= 0 then
  2085                                         nScroll = nScroll - 7
  2086                                     else
  2087                                         return
  2088                                     end
  2089                                 end
  2091                                 -- Kludge stucked event handlers
  2092                                 rectoddy:removeEventListener('touch', rectoddy)
  2093                                 recteven:removeEventListener('touch', recteven)
  2094                                 recthree:removeEventListener('touch', recthree)
  2095                                 rectfour:removeEventListener('touch', rectfour)
  2096                                 rectfive:removeEventListener('touch', rectfive)
  2097                                 rectseis:removeEventListener('touch', rectseis)
  2098                                 rectsieb:removeEventListener('touch', rectsieb)
  2100                                 -- Clear viewport
  2101                                 for nIter = 0, 6 do
  2102                                     local rectfresh = director:createRectangle(0, (dsh - fontarial.height * 3 - nIter * fontarial.height * 1.5), dsw, fontarial.height * 1.5)
  2104                                     function rectfresh:touch(event)
  2105                                         if event.phase == 'began' then
  2106                                             posMove = event.y
  2107                                             local nBase = event.y - (dsh - fontarial.height * 12)
  2108                                             local nRect = fontarial.height * 1.5
  2109                                             local nTemp = nBase / nRect
  2110                                             local nIdx  = 7 - math.floor(nTemp)
  2111                                             if dbIdx[nIdx] == 0 then
  2112                                                 return
  2113                                             elseif event.target.color.r == 240 and event.target.color.g == 230 and event.target.color.b == 140 then
  2114                                                 event.target.color = color.lightGrey
  2115                                                 dbMrk[nIdx] = 0
  2116                                             elseif event.target.color.r == 220 and event.target.color.g == 210 and event.target.color.b == 120 then
  2117                                                 event.target.color = {192, 192, 192}
  2118                                                 dbMrk[nIdx] = 0
  2119                                             elseif event.target.color.r == 192 and event.target.color.g == 192 and event.target.color.b == 192 then
  2120                                                 event.target.color = {220, 210, 120}
  2121                                                 dbMrk[nIdx] = dbIdx[nIdx]
  2122                                             else
  2123                                                 event.target.color = color.khaki
  2124                                                 dbMrk[nIdx] = dbIdx[nIdx]
  2125                                             end
  2126                                         end
  2127                                     end
  2128                                     rectfresh:addEventListener('touch', rectfresh)
  2130                                     if nIter % 2 == 0 then
  2131                                         rectfresh.color = color.lightGrey
  2132                                     else
  2133                                         rectfresh.color = {192, 192, 192}
  2134                                     end
  2136                                     -- Clear indexes
  2137                                     dbIdx[nIter+1] = 0
  2138                                     dbMrk[nIter+1] = 0
  2139                                 end
  2141                                 -- Redraw labels
  2142                                 local nIter = 6
  2143                                 --for nIter = 0, 7 do
  2144                                 local nTemp = nCount - nScroll
  2145                                 if nTemp < 7 then
  2146                                     nIter = nTemp - 1
  2147                                 end
  2149                                 debe = sqlite3.open(pathStor .. 'amalog.sql')
  2150                                 for dbRows in debe:nrows('SELECT * FROM qsos') do
  2151                                     if nTemp < 8 then
  2152                                         if nTemp < 0 then break end
  2153                                         if nIter < 0 then break end
  2154                                         local labrepop = director:createLabel({
  2155                                             x=fontsegoe.height/2, y=dsh-fontarial.height*(3+nIter*1.5) + (fontsegoe.height/3),
  2156                                             hAlignment='left', vAlignment='bottom',
  2157                                             font=fontsegoe,
  2158                                             text=dbRows['call']
  2159                                         })
  2160                                         dbIdx[nIter+1] = dbRows['id']
  2161                                         nIter = nIter - 1
  2162                                         nTemp = nTemp - 1
  2163                                     else
  2164                                         nTemp = nTemp - 1
  2165                                     end
  2166                                 end
  2167                                 debe:close()
  2168                                 debe = nil
  2169                             end
  2170                             posMove = 0
  2171                         end
  2172                     end
  2173                     rectfresh:addEventListener('touch', rectfresh)
  2175                     if nIter % 2 == 0 then
  2176                         rectfresh.color = color.lightGrey
  2177                     else
  2178                         rectfresh.color = {192, 192, 192}
  2179                     end
  2181                     -- Clear indexes
  2182                     dbIdx[nIter+1] = 0
  2183                     dbMrk[nIter+1] = 0
  2184                 end
  2186                 -- Redraw labels
  2187                 local nIter = 6
  2188                 --for nIter = 0, 7 do
  2189                 local nTemp = nCount - nScroll
  2190                 if nTemp < 7 then
  2191                     nIter = nTemp - 1
  2192                 end
  2194                 debe = sqlite3.open(pathStor .. 'amalog.sql')
  2195                 for dbRows in debe:nrows('SELECT * FROM qsos') do
  2196                     if nTemp < 8 then
  2197                         if nTemp < 0 then break end
  2198                         if nIter < 0 then break end
  2199                         local labrepop = director:createLabel({
  2200                             x=fontsegoe.height/2, y=dsh-fontarial.height*(3+nIter*1.5) + (fontsegoe.height/3),
  2201                             hAlignment='left', vAlignment='bottom',
  2202                             font=fontsegoe,
  2203                             text=dbRows['call']
  2204                         })
  2205                         dbIdx[nIter+1] = dbRows['id']
  2206                         nIter = nIter - 1
  2207                         nTemp = nTemp - 1
  2208                     else
  2209                         nTemp = nTemp - 1
  2210                     end
  2211                 end
  2212                 debe:close()
  2213                 debe = nil
  2214             end
  2215             posMove = 0
  2216         end
  2217     end
  2218     butadd:addEventListener('touch', butadd)
  2220     function butdel:touch(event)
  2221         if (event.phase == 'began') then
  2222             -- Provide callback to count rows in table
  2223             local nCount = 0
  2224             function countrows(udata, cols, values, names)
  2225                 assert(udata == 'dingdong')
  2226                 nCount = tonumber(values[1])
  2227                 return 0
  2228             end
  2230             -- Iterate over visible rows, deleting
  2231             debe = sqlite3.open(pathStor .. 'amalog.sql')
  2232             local nRet = debe:exec('SELECT Count(*) FROM qsos', countrows, 'dingdong')
  2233             local nTemp = nCount
  2234             local nIter = 0;  --for nIter = 0, 7 do
  2236             for dbRows in debe:nrows('SELECT * FROM qsos') do
  2237                 if nTemp < 8 then
  2238                     if nIter > 6 then break end
  2239                     if dbMrk[nIter+1] ~= 0 then
  2240                         debe:exec('DELETE FROM qsos WHERE id = \'' .. dbRows['id'] .. '\'')
  2241                     end
  2242                     nIter = nIter + 1
  2243                     nTemp = nTemp - 1
  2244                 else
  2245                     nTemp = nTemp - 1
  2246                 end
  2247             end
  2248             debe:close()
  2249             debe = nil
  2251             -- Kludge stucked event handlers
  2252             rectoddy:removeEventListener('touch', rectoddy)
  2253             recteven:removeEventListener('touch', recteven)
  2254             recthree:removeEventListener('touch', recthree)
  2255             rectfour:removeEventListener('touch', rectfour)
  2256             rectfive:removeEventListener('touch', rectfive)
  2257             rectseis:removeEventListener('touch', rectseis)
  2258             rectsieb:removeEventListener('touch', rectsieb)
  2260             -- Clear viewport
  2261             for nIter = 0, 6 do
  2262                 local rectfresh = director:createRectangle(0, (dsh - fontarial.height * 3 - nIter * fontarial.height * 1.5), dsw, fontarial.height * 1.5)
  2264                 function rectfresh:touch(event)
  2265                     if event.phase == 'began' then
  2266                         local nBase = event.y - (dsh - fontarial.height * 12)
  2267                         local nRect = fontarial.height * 1.5
  2268                         local nTemp = nBase / nRect
  2269                         local nIdx  = 7 - math.floor(nTemp)
  2270                         if dbIdx[nIdx] == 0 then
  2271                             return
  2272                         elseif event.target.color.r == 240 and event.target.color.g == 230 and event.target.color.b == 140 then
  2273                             event.target.color = color.lightGrey
  2274                             dbMrk[nIdx] = 0
  2275                         elseif event.target.color.r == 220 and event.target.color.g == 210 and event.target.color.b == 120 then
  2276                             event.target.color = {192, 192, 192}
  2277                             dbMrk[nIdx] = 0
  2278                         elseif event.target.color.r == 192 and event.target.color.g == 192 and event.target.color.b == 192 then
  2279                             event.target.color = {220, 210, 120}
  2280                             dbMrk[nIdx] = dbIdx[nIdx]
  2281                         else
  2282                             event.target.color = color.khaki
  2283                             dbMrk[nIdx] = dbIdx[nIdx]
  2284                         end
  2285                     end
  2286                 end
  2287                 rectfresh:addEventListener('touch', rectfresh)
  2289                 if nIter % 2 == 0 then
  2290                     rectfresh.color = color.lightGrey
  2291                 else
  2292                     rectfresh.color = {192, 192, 192}
  2293                 end
  2295                 -- Clear indexes
  2296                 dbIdx[nIter+1] = 0
  2297                 dbMrk[nIter+1] = 0
  2298             end
  2300             -- Repopulate UI
  2301             debe = sqlite3.open(pathStor .. 'amalog.sql')
  2302             local nRet = debe:exec('SELECT Count(*) FROM qsos', countrows, 'dingdong')
  2303             local nIter = 6
  2304             --for nIter = 0, 7 do
  2305             local nTemp = nCount
  2306             if nTemp < 7 then
  2307                 nIter = nTemp - 1
  2308             end
  2310             for dbRows in debe:nrows('SELECT * FROM qsos') do
  2311                 if nTemp < 8 then
  2312                     if nIter < 0 then break end
  2313                     local labrepop = director:createLabel({
  2314                         x=fontsegoe.height/2, y=dsh-fontarial.height*(3+nIter*1.5) + (fontsegoe.height/3),
  2315                         hAlignment='left', vAlignment='bottom',
  2316                         font=fontsegoe,
  2317                         text=dbRows['call']
  2318                     })
  2319                     dbIdx[nIter+1] = dbRows['id']
  2320                     nIter = nIter - 1
  2321                     nTemp = nTemp - 1
  2322                 else
  2323                     nTemp = nTemp - 1
  2324                 end
  2325             end
  2326             debe:close()
  2327             debe = nil
  2328         end
  2330         if event.phase == 'ended' then
  2331             if math.abs(event.y - posMove) > fontarial.height*1.5 then
  2332                 -- Provide callback to count rows in table
  2333                 local nCount = 0
  2334                 function countrows(udata, cols, values, names)
  2335                     assert(udata == 'dingdong')
  2336                     nCount = tonumber(values[1])
  2337                     return 0
  2338                 end
  2340                 -- Repopulate UI conditionally
  2341                 debe = sqlite3.open(pathStor .. 'amalog.sql')
  2342                 local nRet = debe:exec('SELECT Count(*) FROM qsos', countrows, 'dingdong')
  2343                 debe:close()
  2344                 debe = nil
  2346                 if event.y - posMove > 0 then  -- Gesture upward
  2347                     if nScroll + 7 < nCount then
  2348                         nScroll = nScroll + 7
  2349                     else
  2350                         return
  2351                     end
  2352                 else -- Gesture downward
  2353                     if nScroll - 7 >= 0 then
  2354                         nScroll = nScroll - 7
  2355                     else
  2356                         return
  2357                     end
  2358                 end
  2360                 -- Kludge stucked event handlers
  2361                 rectoddy:removeEventListener('touch', rectoddy)
  2362                 recteven:removeEventListener('touch', recteven)
  2363                 recthree:removeEventListener('touch', recthree)
  2364                 rectfour:removeEventListener('touch', rectfour)
  2365                 rectfive:removeEventListener('touch', rectfive)
  2366                 rectseis:removeEventListener('touch', rectseis)
  2367                 rectsieb:removeEventListener('touch', rectsieb)
  2369                 -- Clear viewport
  2370                 for nIter = 0, 6 do
  2371                     local rectfresh = director:createRectangle(0, (dsh - fontarial.height * 3 - nIter * fontarial.height * 1.5), dsw, fontarial.height * 1.5)
  2373                     function rectfresh:touch(event)
  2374                         if event.phase == 'began' then
  2375                             posMove = event.y
  2376                             local nBase = event.y - (dsh - fontarial.height * 12)
  2377                             local nRect = fontarial.height * 1.5
  2378                             local nTemp = nBase / nRect
  2379                             local nIdx  = 7 - math.floor(nTemp)
  2380                             if dbIdx[nIdx] == 0 then
  2381                                 return
  2382                             elseif event.target.color.r == 240 and event.target.color.g == 230 and event.target.color.b == 140 then
  2383                                 event.target.color = color.lightGrey
  2384                                 dbMrk[nIdx] = 0
  2385                             elseif event.target.color.r == 220 and event.target.color.g == 210 and event.target.color.b == 120 then
  2386                                 event.target.color = {192, 192, 192}
  2387                                 dbMrk[nIdx] = 0
  2388                             elseif event.target.color.r == 192 and event.target.color.g == 192 and event.target.color.b == 192 then
  2389                                 event.target.color = {220, 210, 120}
  2390                                 dbMrk[nIdx] = dbIdx[nIdx]
  2391                             else
  2392                                 event.target.color = color.khaki
  2393                                 dbMrk[nIdx] = dbIdx[nIdx]
  2394                             end
  2395                         end
  2396                         if event.phase == 'ended' then
  2397                             if math.abs(event.y - posMove) > fontarial.height*1.5 then
  2398                                 -- Provide callback to count rows in table
  2399                                 local nCount = 0
  2400                                 function countrows(udata, cols, values, names)
  2401                                     assert(udata == 'dingdong')
  2402                                     nCount = tonumber(values[1])
  2403                                     return 0
  2404                                 end
  2406                                 -- Repopulate UI conditionally
  2407                                 debe = sqlite3.open(pathStor .. 'amalog.sql')
  2408                                 local nRet = debe:exec('SELECT Count(*) FROM qsos', countrows, 'dingdong')
  2409                                 debe:close()
  2410                                 debe = nil
  2412                                 if event.y - posMove > 0 then  -- Gesture upward
  2413                                     if nScroll + 7 < nCount then
  2414                                         nScroll = nScroll + 7
  2415                                     else
  2416                                         return
  2417                                     end
  2418                                 else -- Gesture downward
  2419                                     if nScroll - 7 >= 0 then
  2420                                         nScroll = nScroll - 7
  2421                                     else
  2422                                         return
  2423                                     end
  2424                                 end
  2426                                 -- Kludge stucked event handlers
  2427                                 rectoddy:removeEventListener('touch', rectoddy)
  2428                                 recteven:removeEventListener('touch', recteven)
  2429                                 recthree:removeEventListener('touch', recthree)
  2430                                 rectfour:removeEventListener('touch', rectfour)
  2431                                 rectfive:removeEventListener('touch', rectfive)
  2432                                 rectseis:removeEventListener('touch', rectseis)
  2433                                 rectsieb:removeEventListener('touch', rectsieb)
  2435                                 -- Clear viewport
  2436                                 for nIter = 0, 6 do
  2437                                     local rectfresh = director:createRectangle(0, (dsh - fontarial.height * 3 - nIter * fontarial.height * 1.5), dsw, fontarial.height * 1.5)
  2439                                     function rectfresh:touch(event)
  2440                                         if event.phase == 'began' then
  2441                                             posMove = event.y
  2442                                             local nBase = event.y - (dsh - fontarial.height * 12)
  2443                                             local nRect = fontarial.height * 1.5
  2444                                             local nTemp = nBase / nRect
  2445                                             local nIdx  = 7 - math.floor(nTemp)
  2446                                             if dbIdx[nIdx] == 0 then
  2447                                                 return
  2448                                             elseif event.target.color.r == 240 and event.target.color.g == 230 and event.target.color.b == 140 then
  2449                                                 event.target.color = color.lightGrey
  2450                                                 dbMrk[nIdx] = 0
  2451                                             elseif event.target.color.r == 220 and event.target.color.g == 210 and event.target.color.b == 120 then
  2452                                                 event.target.color = {192, 192, 192}
  2453                                                 dbMrk[nIdx] = 0
  2454                                             elseif event.target.color.r == 192 and event.target.color.g == 192 and event.target.color.b == 192 then
  2455                                                 event.target.color = {220, 210, 120}
  2456                                                 dbMrk[nIdx] = dbIdx[nIdx]
  2457                                             else
  2458                                                 event.target.color = color.khaki
  2459                                                 dbMrk[nIdx] = dbIdx[nIdx]
  2460                                             end
  2461                                         end
  2462                                     end
  2463                                     rectfresh:addEventListener('touch', rectfresh)
  2465                                     if nIter % 2 == 0 then
  2466                                         rectfresh.color = color.lightGrey
  2467                                     else
  2468                                         rectfresh.color = {192, 192, 192}
  2469                                     end
  2471                                     -- Clear indexes
  2472                                     dbIdx[nIter+1] = 0
  2473                                     dbMrk[nIter+1] = 0
  2474                                 end
  2476                                 -- Redraw labels
  2477                                 local nIter = 6
  2478                                 --for nIter = 0, 7 do
  2479                                 local nTemp = nCount - nScroll
  2480                                 if nTemp < 7 then
  2481                                     nIter = nTemp - 1
  2482                                 end
  2484                                 debe = sqlite3.open(pathStor .. 'amalog.sql')
  2485                                 for dbRows in debe:nrows('SELECT * FROM qsos') do
  2486                                     if nTemp < 8 then
  2487                                         if nTemp < 0 then break end
  2488                                         if nIter < 0 then break end
  2489                                         local labrepop = director:createLabel({
  2490                                             x=fontsegoe.height/2, y=dsh-fontarial.height*(3+nIter*1.5) + (fontsegoe.height/3),
  2491                                             hAlignment='left', vAlignment='bottom',
  2492                                             font=fontsegoe,
  2493                                             text=dbRows['call']
  2494                                         })
  2495                                         dbIdx[nIter+1] = dbRows['id']
  2496                                         nIter = nIter - 1
  2497                                         nTemp = nTemp - 1
  2498                                     else
  2499                                         nTemp = nTemp - 1
  2500                                     end
  2501                                 end
  2502                                 debe:close()
  2503                                 debe = nil
  2504                             end
  2505                             posMove = 0
  2506                         end
  2507                     end
  2508                     rectfresh:addEventListener('touch', rectfresh)
  2510                     if nIter % 2 == 0 then
  2511                         rectfresh.color = color.lightGrey
  2512                     else
  2513                         rectfresh.color = {192, 192, 192}
  2514                     end
  2516                     -- Clear indexes
  2517                     dbIdx[nIter+1] = 0
  2518                     dbMrk[nIter+1] = 0
  2519                 end
  2521                 -- Redraw labels
  2522                 local nIter = 6
  2523                 --for nIter = 0, 7 do
  2524                 local nTemp = nCount - nScroll
  2525                 if nTemp < 7 then
  2526                     nIter = nTemp - 1
  2527                 end
  2529                 debe = sqlite3.open(pathStor .. 'amalog.sql')
  2530                 for dbRows in debe:nrows('SELECT * FROM qsos') do
  2531                     if nTemp < 8 then
  2532                         if nTemp < 0 then break end
  2533                         if nIter < 0 then break end
  2534                         local labrepop = director:createLabel({
  2535                             x=fontsegoe.height/2, y=dsh-fontarial.height*(3+nIter*1.5) + (fontsegoe.height/3),
  2536                             hAlignment='left', vAlignment='bottom',
  2537                             font=fontsegoe,
  2538                             text=dbRows['call']
  2539                         })
  2540                         dbIdx[nIter+1] = dbRows['id']
  2541                         nIter = nIter - 1
  2542                         nTemp = nTemp - 1
  2543                     else
  2544                         nTemp = nTemp - 1
  2545                     end
  2546                 end
  2547                 debe:close()
  2548                 debe = nil
  2549             end
  2550             posMove = 0
  2551         end
  2552     end
  2553     butdel:addEventListener('touch', butdel)
  2554 end
  2556 function sceneloc:tearDown(event)
  2557     dbg.print('sceneloc:tearDown')
  2558     --rectfresh:removeEventListener('touch', rectfresh)
  2559     rectoddy:removeEventListener('touch', rectoddy)
  2560     recteven:removeEventListener('touch', recteven)
  2561     recthree:removeEventListener('touch', recthree)
  2562     rectfour:removeEventListener('touch', rectfour)
  2563     rectfive:removeEventListener('touch', rectfive)
  2564     rectseis:removeEventListener('touch', rectseis)
  2565     rectsieb:removeEventListener('touch', rectsieb)
  2566     --self.obj0:removeFromParent()
  2567     --self.obj1:removeFromParent()
  2568     --self.obj0 = nil
  2569     --self.obj1 = nil
  2570 end
  2571 function sceneloc:enterPreTransition(event)
  2572     dbg.print('sceneloc:enterPreTransition')
  2573 end
  2574 function sceneloc:enterPostTransition(event)
  2575     dbg.print('sceneloc:enterPostTransition')
  2576 end
  2577 function sceneloc:exitPreTransition(event)
  2578     dbg.print('sceneloc:exitPreTransition')
  2579 end
  2580 function sceneloc:exitPostTransition(event)
  2581     dbg.print('sceneloc:exitPostTransition')
  2582 end
  2584 sceneloc:addEventListener({'setUp', 'tearDown', 'enterPreTransition',
  2585     'enterPostTransition', 'exitPreTransition', 'exitPostTransition'}, sceneloc)
  2587 return sceneloc

mercurial