Class: Confetti::Template::AndroidManifest

Inherits:
Base
  • Object
show all
Includes:
JavaChecks
Defined in:
lib/confetti/templates/android_manifest.rb

Constant Summary collapse

DEFAULT_MIN_SDK =
"7"
GAP_PERMISSIONS_MAP =
{
  "camera"        => %w{CAMERA},
  "notification"  => %w{VIBRATE},
  "geolocation"   => %w{ACCESS_COARSE_LOCATION
                        ACCESS_FINE_LOCATION
                        ACCESS_LOCATION_EXTRA_COMMANDS},
  "media"         => %w{RECORD_AUDIO
                        RECORD_VIDEO
                        MODIFY_AUDIO_SETTINGS},
  "contacts"      => %w{READ_CONTACTS
                        WRITE_CONTACTS
                        GET_ACCOUNTS},
  "file"          => %w{WRITE_EXTERNAL_STORAGE},
  "network"       => %w{ACCESS_NETWORK_STATE},
  "battery"       => %w{BROADCAST_STICKY}
}
GAP_FEATURES_MAP =
{
  "camera"        => %w{camera}
}
ORIENTATIONS_MAP =
{
  :default    => "unspecified",
  :landscape  => "landscape",
  :portrait => "portrait"
}

Constants included from JavaChecks

JavaChecks::RESERVED_WORDS

Instance Method Summary collapse

Methods included from JavaChecks

#convert_to_java_identifier, #convert_to_java_package_id, #is_java_identifier, #is_java_package_id, #reserved_word?

Methods inherited from Base

#initialize

Constructor Details

This class inherits a constructor from Confetti::Template::Base

Instance Method Details

#app_orientationObject



60
61
62
# File 'lib/confetti/templates/android_manifest.rb', line 60

def app_orientation
  ORIENTATIONS_MAP[@config.orientation]
end

#class_nameObject



39
40
41
# File 'lib/confetti/templates/android_manifest.rb', line 39

def class_name
  convert_to_java_identifier(@config.name.name) if @config
end

#featuresObject



68
69
70
# File 'lib/confetti/templates/android_manifest.rb', line 68

def features
  translate_feature GAP_FEATURES_MAP
end

#install_locationObject



89
90
91
92
93
94
# File 'lib/confetti/templates/android_manifest.rb', line 89

def install_location
  valid_choices = %w(internalOnly auto preferExternal)
  choice = @config.preference("android-installLocation").to_s

  valid_choices.include?(choice) ? choice : "internalOnly"
end

#int_value?(val) ⇒ Boolean

Returns:

  • (Boolean)


124
125
126
127
128
129
# File 'lib/confetti/templates/android_manifest.rb', line 124

def int_value? val
  return if val.nil?

  integer = /^\d+$/
  val.to_s.match(integer)
end

#max_sdk_version_attributeObject



102
103
104
105
106
107
108
# File 'lib/confetti/templates/android_manifest.rb', line 102

def max_sdk_version_attribute
  choice = @config.preference("android-maxSdkVersion")

  if int_value?(choice)
    "android:maxSdkVersion=\"#{ choice }\" "
  end
end

#min_sdk_versionObject



96
97
98
99
100
# File 'lib/confetti/templates/android_manifest.rb', line 96

def min_sdk_version
  choice = @config.preference("android-minSdkVersion").to_s

  int_value?(choice) ? choice : DEFAULT_MIN_SDK
end

#output_filenameObject



43
44
45
# File 'lib/confetti/templates/android_manifest.rb', line 43

def output_filename
  "AndroidManifest.xml"
end

#package_nameObject



35
36
37
# File 'lib/confetti/templates/android_manifest.rb', line 35

def package_name
  convert_to_java_package_id(@config.package)
end

#permissionsObject



64
65
66
# File 'lib/confetti/templates/android_manifest.rb', line 64

def permissions
  translate_feature GAP_PERMISSIONS_MAP
end

#target_sdk_version_attributeObject



110
111
112
113
114
115
116
# File 'lib/confetti/templates/android_manifest.rb', line 110

def target_sdk_version_attribute
  choice = @config.preference("android-targetSdkVersion")

  if int_value?(choice)
    "android:targetSdkVersion=\"#{ choice }\" "
  end
end

#translate_feature(map) ⇒ Object



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/confetti/templates/android_manifest.rb', line 72

def translate_feature map
  features = []
  phonegap_api = /http\:\/\/api.phonegap.com\/1[.]0\/(\w+)/
  feature_names = @config.feature_set.map { |f| f.name }
  feature_names.sort

  feature_names.each do |f|
    feature_name = f.match(phonegap_api)[1] if f.match(phonegap_api)
    associated_features = map[feature_name]

    features.concat(associated_features) if associated_features
  end

  features.sort!
  features.map { |f| { :name => f } }
end

#versionObject



47
48
49
# File 'lib/confetti/templates/android_manifest.rb', line 47

def version
  @config.version_string || '0.0.1'
end

#version_codeObject



51
52
53
54
55
56
57
58
# File 'lib/confetti/templates/android_manifest.rb', line 51

def version_code
  if @config.version_code.nil?
    '1'
  else
    int = @config.version_code.to_i
    int == 0 ? '1' : int.to_s
  end
end

#window_soft_input_modeObject



118
119
120
121
122
# File 'lib/confetti/templates/android_manifest.rb', line 118

def window_soft_input_mode
  choice = @config.preference("android-windowSoftInputMode").to_s

  choice == "" ? "stateUnspecified|adjustUnspecified" : choice
end