Class: ManabuDesktop::Screens::Login

Inherits:
Base
  • Object
show all
Defined in:
lib/screens/login.rb

Constant Summary collapse

CACHE_FILE_NAME =
"login_cache.manabu"

Instance Attribute Summary collapse

Attributes inherited from Base

#builder, #window

Instance Method Summary collapse

Methods inherited from Base

#_show

Constructor Details

#initializeLogin

Returns a new instance of Login.



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/screens/login.rb', line 14

def initialize()
  super('login')

  _load_cache()

  @window.resizable = false

  @builder.get_object('server.Label').set_label(I18n.t('login.server'))
  @server_comboBoxText = @builder.get_object('server.ComboBoxText')
  
  @builder.get_object('secure.Label').set_label(I18n.t('login.secure'))
  @server_secure_switch = @builder.get_object('secure.Switch')

  @cache_info[:servers].each{ |server| @server_comboBoxText.append_text(server[:addr])}
  if (@cache_info[:servers].length > 0)
    @server_comboBoxText.set_active(0)
    @server_secure_switch.active = @cache_info[:servers][0][:secure]
  end
  # TODO: set server details when selection is changed
  # TODO: allow deletion of a server entry
  # TODO: save new servers

  @builder.get_object('user.Label').set_label(I18n.t('login.user'))
  @user_entry = @builder.get_object('user.Entry')
  @builder.get_object('password.Label').set_label(I18n.t('login.password'))
  @password_entry = @builder.get_object('password.Entry')

  @builder.get_object('toolbox.Label').set_label(I18n.t('login.toolbox'))
  @open_toolbox_switch = @builder.get_object('toolbox.Switch')

  engage_button = @builder.get_object('engage.Button')
  engage_button.set_label(I18n.t('login.engage'))
  engage_button.signal_connect('clicked') {
    _engage(@server_comboBoxText.active_text, @server_secure_switch.active?,
            @user_entry.text, @password_entry.text)
  }

  _show()
end

Instance Attribute Details

#cache_infoObject

Returns the value of attribute cache_info.



10
11
12
# File 'lib/screens/login.rb', line 10

def cache_info
  @cache_info
end

#clientObject

Returns the value of attribute client.



10
11
12
# File 'lib/screens/login.rb', line 10

def client
  @client
end

Instance Method Details

#_engage(server, secure, user, password) ⇒ Object

Attempt to engage a connection with the given prarameters



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/screens/login.rb', line 69

def _engage(server, secure, user, password)
  addr = /^[^:|^\/]*[^:|^\/]/.match(server) # server part
  port = /[^:]\d[^\D]*/.match(server).to_s.to_i # port part
  port = 80 if (port == 0)
  route = /\/.*$/.match(server) #route part

  # TODO: first check if a session is already open to this server/port/user
  @client = Manabu::Client.new(user, password, "#{addr}#{route}", port,
                               force_secure_connection: secure)
  if @client.status == :connected
    ManabuDesktop::Sessions.add_session(@client)
    if @open_toolbox_switch.active?
      _open_toolbox(@client)
    else
      @window.destroy
    end
  end
end

#_load_cacheObject



54
55
56
57
58
59
60
61
62
# File 'lib/screens/login.rb', line 54

def _load_cache()
  @cache_info = ManabuDesktop::Util::Cache.load(CACHE_FILE_NAME)
  if (@cache_info === {} || !@cache_info.includes?(:servers) ||
      !@cache_info[:servers].instance_of?(Array))
    @cache_info = {
      servers: [{addr: 'localhost:9000', secure: false}]
    }
  end
end

#_open_toolbox(client) ⇒ Object



88
89
90
91
# File 'lib/screens/login.rb', line 88

def _open_toolbox(client)
  @window.destroy
  ManabuDesktop::Screens::ToolBox.new(client)
end

#_save_cacheObject



64
65
66
# File 'lib/screens/login.rb', line 64

def _save_cache()

end

#_update_server_listObject



93
94
# File 'lib/screens/login.rb', line 93

def _update_server_list()
end