Class: JLDrill::MergeQuizContext

Inherits:
FileProgressContext show all
Defined in:
lib/jldrill/contexts/MergeQuizContext.rb

Overview

Shows progress while merging two quiz files

Instance Attribute Summary

Attributes inherited from Context::Context

#mainView, #parent, #viewBridge

Instance Method Summary collapse

Methods inherited from FileProgressContext

#createViews, #destroyViews, #exitFileProgressContext

Methods inherited from Context::Context

#addView, #createViews, #destroyViews, #isEntered?, #onExit, #peekAtView, #setupViews

Constructor Details

#initialize(viewBridge) ⇒ MergeQuizContext

Returns a new instance of MergeQuizContext.



12
13
14
15
16
# File 'lib/jldrill/contexts/MergeQuizContext.rb', line 12

def initialize(viewBridge)
	super(viewBridge)
          @quiz1 = nil
          @quiz2 = nil
end

Instance Method Details

#enter(parent, quiz1, quiz2) ⇒ Object



47
48
49
50
51
# File 'lib/jldrill/contexts/MergeQuizContext.rb', line 47

def enter(parent, quiz1, quiz2)
    @quiz1 = quiz1
    @quiz2 = quiz2
    super(parent)
end

#exitObject



53
54
55
56
# File 'lib/jldrill/contexts/MergeQuizContext.rb', line 53

def exit
    @quiz1.updateLoad
    super
end

#getFilenameObject



18
19
20
# File 'lib/jldrill/contexts/MergeQuizContext.rb', line 18

def getFilename
    return "Merging #{@quiz1.name} with #{@quiz2.name} data"
end

#isValid?(parent) ⇒ Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/jldrill/contexts/MergeQuizContext.rb', line 43

def isValid?(parent)
    return !parent.nil? && !@quiz1.nil? && !@quiz2.nil?
end

#readFileObject



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/jldrill/contexts/MergeQuizContext.rb', line 22

def readFile
    size = @quiz2.length
    pos = 0
    sortedItems = @quiz1.contents.getSortedItems
    appendedItems = @quiz2.contents.allItems
    @mainView.idle_add do
        limit = pos + @quiz1.stepSize
        if limit > size then limit = size end
        while (pos < limit)
            item = appendedItems[pos]
            if !sortedItems.binarySearch(item)
                item.position = -1
                @quiz1.contents.addItem(item, item.bin)
            end
            pos += 1
            @mainView.update(pos.to_f / size.to_f)
        end
        pos >= size
    end
end