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
# 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'))
  @builder.get_object('secure.Label').set_label(I18n.t('login.secure'))
  @server_comboBoxText = @builder.get_object('server.ComboBoxText')
  @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')

  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



63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/screens/login.rb', line 63

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)
    _open_toolbox(@client)
  end
end

#_load_cacheObject



49
50
51
52
53
54
55
56
57
# File 'lib/screens/login.rb', line 49

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



78
79
80
81
# File 'lib/screens/login.rb', line 78

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

#_save_cacheObject



59
60
61
# File 'lib/screens/login.rb', line 59

def _save_cache()

end

#_update_server_listObject



83
84
# File 'lib/screens/login.rb', line 83

def _update_server_list()
end