├── .gitignore ├── .idea ├── .name ├── compiler.xml ├── copyright │ └── profiles_settings.xml ├── encodings.xml ├── gradle.xml ├── misc.xml ├── modules.xml ├── runConfigurations.xml └── vcs.xml ├── MaterialIconView.iml ├── README.md ├── app ├── .gitignore ├── app.iml ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── assets │ ├── enumjava.java │ ├── enumjavaenum.java │ ├── enumjavahex.java │ ├── enumxml.xml │ ├── icons.svg │ ├── materialdesignicons-webfont.ttf │ ├── out.txt │ └── parse.py │ ├── java │ └── net │ │ └── steamcrafted │ │ └── materialiconview │ │ ├── ImageAdapter.java │ │ ├── MainActivity.java │ │ └── SetBoundsTest.java │ └── res │ ├── drawable │ └── compare.xml │ ├── layout │ ├── activity_main.xml │ ├── example.xml │ └── image_list_item.xml │ ├── menu │ ├── menu_main.xml │ └── menu_nocolor.xml │ ├── mipmap-hdpi │ └── ic_launcher.png │ ├── mipmap-mdpi │ └── ic_launcher.png │ ├── mipmap-xhdpi │ └── ic_launcher.png │ ├── mipmap-xxhdpi │ └── ic_launcher.png │ ├── values-w820dp │ └── dimens.xml │ └── values │ ├── dimens.xml │ ├── strings.xml │ └── styles.xml ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── license.md ├── materialiconlib ├── .gitignore ├── build.gradle ├── materialiconlib.iml ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── assets │ └── materialdesignicons-webfont.ttf │ ├── java │ └── net │ │ └── steamcrafted │ │ └── materialiconlib │ │ ├── MaterialDrawableBuilder.java │ │ ├── MaterialIconUtils.java │ │ ├── MaterialIconView.java │ │ └── MaterialMenuInflater.java │ └── res │ └── values │ └── attrs.xml └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | .gradle 2 | /local.properties 3 | /.idea/workspace.xml 4 | /.idea/libraries 5 | .DS_Store 6 | /build 7 | /captures 8 | -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | MaterialIconView -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 22 | -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 20 | 21 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 19 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 46 | 47 | 48 | 49 | 50 | Android API 19 Platform 51 | 52 | 57 | 58 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /MaterialIconView.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Material Icon Library 2 | 3 | A library containing over 2000 material vector icons that can be easily used as Drawable, a standalone View or inside menu resource files. Tired of having to search for and generate png resources every time you want to test something? This library puts an end to that burden and makes swapping icons a breeze, check out the usage below and you'll see why. 4 | 5 | # Demo 6 | 7 | ![](http://i.imgur.com/KXHfXo8.gif) 8 | 9 | # Stats 10 | 11 | - MinSdk 4 12 | - LIVE previews and code completion in the Android Studio Designer (Does NOT work out of the box, see step 0 below!) 13 | - Currently contains 2354 icons, you can look at them here: https://materialdesignicons.com 14 | - Configured in less than a minute 15 | - Adds about 257kb to your apk (so a whopping average of __109 bytes per icon__) 16 | - Includes a custom Drawable, IconView and a MenuInflater for all different icon use cases 17 | 18 | # Usage 19 | 20 | ## Step 0 21 | 22 | Now I still have your attention, to get the previews to work in Android Studio you'll have to put the font file inside the assets of your project yourself. Due to a bug it does not think about looking inside the library's assets for some odd reason. 23 | 24 | Get the font file [__here__](https://github.com/code-mc/material-icon-lib/blob/master/materialiconlib/src/main/assets/materialdesignicons-webfont.ttf?raw=true). 25 | 26 | You don't have to worry about android including the file twice in your apk. Android Studio recognizes the duplicate file name and only keeps one copy in your apk! 27 | 28 | Previews work inside layout files, menu resource files sadly do not support previews (more on those below). 29 | 30 | ## Step 1 31 | 32 | #### Gradle 33 | 34 | ```groovy 35 | dependencies { 36 | compile 'net.steamcrafted:materialiconlib:1.1.5' 37 | } 38 | ``` 39 | 40 | ## Step 2 41 | 42 | There's a total of 3 different use cases (click the links to jump to their section). You can use the provided [`MaterialIconView`](#materialiconview) which mostly is just a more advanced `ImageView` or use your preferred `ImageView` and use the [`MaterialDrawable`](#materialdrawable) as Drawable resource. If you want to spice up your `Toolbar` with icons from this library there is a custom [`MaterialMenuInflater`](#materialmenuinflater) that does just that in a single line of code. 43 | 44 | ### MaterialIconView 45 | 46 | Add the view to your XML: 47 | 48 | ```xml 49 | 51 | 52 | android:layout_width="48dp" 53 | android:layout_height="48dp" 54 | app:materialIcon="clipboard_arrow_down" 55 | app:materialIconColor="#fff" 56 | app:materialIconSize="24dp" 57 | android:scaleType="center" 58 | android:background="@android:color/darker_gray" 59 | android:id="@+id/icon" 60 | /> 61 | ``` 62 | 63 | You can also use the other route: the "wrap_content" way: 64 | 65 | ```xml 66 | 68 | 69 | android:layout_width="wrap_content" 70 | android:layout_height="wrap_content" 71 | android:padding="12dp" 72 | app:materialIcon="clipboard_arrow_down" 73 | app:materialIconColor="#fff" 74 | app:materialIconSize="24dp" 75 | 76 | android:background="@android:color/darker_gray" 77 | android:id="@+id/icon" 78 | /> 79 | ``` 80 | 81 | The view is inherited from `ImageView`. This means that you can use any and all features of the very flexible `ImageView` BUT be reminded that this view does not cache any of the drawables it creates, so every time you change something about the icon, it's going to regenerate the drawable. Using this view inside listviews is highly discouraged, if you want to use these icons in a `ListView`, cache the drawables and use the `MaterialDrawableBuilder` in combination with an `ImageView`! 82 | 83 | As mentioned before this extends the android `ImageView` class, there's a few methods unique to this particular view: 84 | 85 | ```java 86 | // Sets the icon, all 1000+ icons are available inside the MaterialDrawableBuilder.IconValue enum 87 | yourMaterialIconView.setIcon(IconValue iconValue); 88 | 89 | // Sets the size of the icon to the default action bar icon size 90 | yourMaterialIconView.setToActionbarSize(); 91 | 92 | // Provide a dimension resource to use as icon size 93 | yourMaterialIconView.setSizeResource(int dimenRes); 94 | 95 | // Set the icon size using a value in dp units 96 | yourMaterialIconView.setSizeDp(int size); 97 | 98 | // Set the icon size using a pixel value 99 | yourMaterialIconView.setSizePx(int size); 100 | 101 | // Set the icon color 102 | yourMaterialIconView.setColor(int color); 103 | 104 | // Set the icon color using a color resource 105 | yourMaterialIconView.setColorResource(int colorRes); 106 | 107 | // Set the icon's alpha value (0-255) 0 for completely transparent 108 | yourMaterialIconView.setAlpha(int alpha); 109 | 110 | // Sets a custom colorfilter to the drawing paint (for the more advanced devs) 111 | yourMaterialIconView.setColorFilter(ColorFilter cf); 112 | 113 | // Clear the color filter set using above method 114 | yourMaterialIconView.clearColorFilter(); 115 | 116 | // Sets a custom paint style (for the more advanced devs) 117 | yourMaterialIconView.setStyle(Paint.Style style); 118 | 119 | 120 | // You can use any of the ImageView methods as well: 121 | yourMaterialIconView.setBackgroundColor(Color.WHITE) 122 | yourMaterialIconView.setScaleType(ScaleType.CENTER) 123 | // etc... 124 | ``` 125 | 126 | ### MaterialDrawable 127 | 128 | That was easy, right? Next up the custom drawables, they are internally used by the `MaterialIconView` so you'll see that they share many of the same methods. 129 | 130 | The initialisation happens using the `MaterialDrawableBuilder`, which you can use to set all the properties of the drawable: 131 | 132 | ```java 133 | // The method returns a MaterialDrawable, but as it is private to the builder you'll have to store it as a regular Drawable ;) 134 | Drawable yourDrawable = MaterialDrawableBuilder.with(context) // provide a context 135 | .setIcon(MaterialDrawableBuilder.IconValue.WEATHER_RAINY) // provide an icon 136 | .setColor(Color.WHITE) // set the icon color 137 | .setToActionbarSize() // set the icon size 138 | .build(); // Finally call build 139 | ``` 140 | 141 | This will throw an `IconNotSetException` if you forget to provide an icon. 142 | 143 | Once you call build, your Drawable will be spit out and you are ready to use it everywhere you please! Setting it to a view is just as easy as with any other `Drawable` (e.g. for `ImageView`): 144 | 145 | ```java 146 | yourImageView.setImageDrawable(yourDrawable); 147 | ``` 148 | 149 | And that's all there is to it. Below are all the methods you can use with the `MaterialDrawableBuilder` for reference. 150 | 151 | ```java 152 | // Sets the icon, all 1000+ icons are available inside the MaterialDrawableBuilder.IconValue enum 153 | builder.setIcon(IconValue iconValue); 154 | 155 | // Builds the drawable, this method always comes last ofcourse 156 | builder.build(); 157 | 158 | // Sets the size of the icon to the default action bar icon size 159 | builder.setToActionbarSize(); 160 | 161 | // Provide a dimension resource to use as icon size 162 | builder.setSizeResource(int dimenRes); 163 | 164 | // Set the icon size using a value in dp units 165 | builder.setSizeDp(int size); 166 | 167 | // Set the icon size using a pixel value 168 | builder.setSizePx(int size); 169 | 170 | // Set the icon color 171 | builder.setColor(int color); 172 | 173 | // Set the icon color using a color resource 174 | builder.setColorResource(int colorRes); 175 | 176 | // Set the icon's alpha value (0-255) 0 for completely transparent 177 | builder.setAlpha(int alpha); 178 | 179 | // Sets a custom colorfilter to the drawing paint (for the more advanced devs) 180 | builder.setColorFilter(ColorFilter cf); 181 | 182 | // Clear the color filter set using above method 183 | builder.clearColorFilter(); 184 | 185 | // Returns the alpha value 186 | builder.getOpacity(); 187 | 188 | // Sets a custom paint style (for the more advanced devs) 189 | builder.setStyle(Paint.Style style); 190 | ``` 191 | 192 | ### MaterialMenuInflater 193 | 194 | With the `MaterialMenuInflater` you can use any of the icons available in this library *inside* your menu resource files. In XML you'd have to do the following: 195 | 196 | ```xml 197 | 199 | xmlns:tools="http://schemas.android.com/tools" > 200 | 201 | 202 | 206 | app:materialIconColor="#FE0000" 207 | /> 208 | 209 | 210 | ``` 211 | 212 | To actually inflate this menu you'll now have to use the `MaterialMenuInflater` instead of the default one. For the AppCompatActivity do the following in your `onCreateOptionsMenu`: 213 | 214 | ```java 215 | @Override 216 | public boolean onCreateOptionsMenu(Menu menu) { 217 | MaterialMenuInflater 218 | .with(this) // Provide the activity context 219 | // Set the fall-back color for all the icons. Colors set inside the XML will always have higher priority 220 | .setDefaultColor(Color.BLUE) 221 | // Inflate the menu 222 | .inflate(R.menu.your_menu_resource, menu); 223 | return true; 224 | } 225 | ``` 226 | 227 | Since the release of the Appcompat-v7 library you can also use the `Toolbar` view inside your XML layouts. Inflating a menu for a toolbar is a bit different from the usual way, but it is just as easy: 228 | 229 | ```java 230 | // Get the toolbar from layout 231 | Toolbar toolbar = (Toolbar) findViewById(R.id.your_toolbar); 232 | 233 | MaterialMenuInflater 234 | .with(this) // Provide a context, activity context will do just fine 235 | // Set the fall-back color for all the icons. Colors set inside the XML will always have higher priority 236 | .setDefaultColor(Color.BLUE) 237 | // Inflate the menu 238 | .inflate(R.menu.your_menu_resource, toolbar.getMenu()); 239 | ``` 240 | 241 | And that's all there is to it. 242 | 243 | # License 244 | 245 | Released under the [Apache 2.0 License](https://github.com/code-mc/material-icon-lib/blob/master/license.md) 246 | 247 | * __MaterialDesignicons__ Released under the [SIL Open Font License 1.1](http://opensource.org/licenses/OFL-1.1) 248 | * __Google Material Design Icons__ Released under the [Apache 2.0 License](https://github.com/google/material-design-icons/blob/master/LICENSE) 249 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/app.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | 11 | 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 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | repositories { maven { url "http://dl.bintray.com/codecrafted/maven" } } 4 | 5 | android { 6 | compileSdkVersion 27 7 | buildToolsVersion '25.0.3' 8 | 9 | defaultConfig { 10 | applicationId "net.steamcrafted.materialiconview" 11 | minSdkVersion 14 12 | targetSdkVersion 27 13 | versionCode 1 14 | versionName "1.0" 15 | } 16 | buildTypes { 17 | release { 18 | minifyEnabled false 19 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 20 | } 21 | } 22 | 23 | 24 | 25 | lintOptions { 26 | abortOnError false 27 | } 28 | } 29 | 30 | dependencies { 31 | compile fileTree(dir: 'libs', include: ['*.jar']) 32 | compile 'com.android.support:appcompat-v7:27.1.1' 33 | //compile 'net.steamcrafted:materialiconlib:1.1.2' 34 | compile project(":materialiconlib") 35 | } 36 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in C:\Users\Wannes2\AppData\Local\Android\android-studio\sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/assets/enumjava.java: -------------------------------------------------------------------------------- 1 | {"vector-square","access-point","access-point-network","account","account-alert","account-box","account-box-outline","account-check","account-circle","account-convert","account-key","account-location","account-minus","account-multiple","account-multiple-outline","account-multiple-plus","account-network","account-off","account-outline","account-plus","account-remove","account-search","account-star","orbit","account-switch","adjust","air-conditioner","airballoon","airplane","airplane-off","airplay","alarm","alarm-check","alarm-multiple","alarm-off","alarm-plus","album","alert","alert-box","alert-circle","alert-octagon","alert-outline","alpha","alphabetical","amazon","amazon-drive","ambulance","amplifier","anchor","android","android-debug-bridge","android-studio","apple","apple-finder","apple-ios","apple-icloud","apple-safari","font-awesome","apps","archive","arrange-bring-forward","arrange-bring-to-front","arrange-send-backward","arrange-send-to-back","arrow-all","arrow-bottom-left","arrow-bottom-right","arrow-collapse-all","arrow-down","arrow-down-thick","arrow-down-bold-circle","arrow-down-bold-circle-outline","arrow-down-bold-hexagon-outline","arrow-down-drop-circle","arrow-down-drop-circle-outline","arrow-expand-all","arrow-left","arrow-left-thick","arrow-left-bold-circle","arrow-left-bold-circle-outline","arrow-left-bold-hexagon-outline","arrow-left-drop-circle","arrow-left-drop-circle-outline","arrow-right","arrow-right-thick","arrow-right-bold-circle","arrow-right-bold-circle-outline","arrow-right-bold-hexagon-outline","arrow-right-drop-circle","arrow-right-drop-circle-outline","arrow-top-left","arrow-top-right","arrow-up","arrow-up-thick","arrow-up-bold-circle","arrow-up-bold-circle-outline","arrow-up-bold-hexagon-outline","arrow-up-drop-circle","arrow-up-drop-circle-outline","assistant","at","attachment","audiobook","auto-fix","auto-upload","autorenew","av-timer","baby","backburger","backspace","backup-restore","bank","barcode","barcode-scan","barley","barrel","basecamp","basket","basket-fill","basket-unfill","battery","battery-10","battery-20","battery-30","battery-40","battery-50","battery-60","battery-70","battery-80","battery-90","battery-alert","battery-charging","battery-charging-100","battery-charging-20","battery-charging-30","battery-charging-40","battery-charging-60","battery-charging-80","battery-charging-90","battery-minus","battery-negative","battery-outline","battery-plus","battery-positive","battery-unknown","beach","flask","flask-empty","flask-empty-outline","flask-outline","beats","beer","behance","bell","bell-off","bell-outline","bell-plus","bell-ring","bell-ring-outline","bell-sleep","beta","bible","bike","bing","binoculars","bio","biohazard","bitbucket","black-mesa","blackberry","blender","blinds","block-helper","blogger","bluetooth","bluetooth-audio","bluetooth-connect","bluetooth-off","bluetooth-settings","bluetooth-transfer","blur","blur-linear","blur-off","blur-radial","bone","book","book-multiple","book-multiple-variant","book-open","book-open-variant","book-variant","bookmark","bookmark-check","bookmark-music","bookmark-outline","bookmark-plus-outline","bookmark-plus","bookmark-remove","border-all","border-bottom","border-color","border-horizontal","border-inside","border-left","border-none","border-outside","border-right","border-style","border-top","border-vertical","bowling","box","box-cutter","briefcase","briefcase-check","briefcase-download","briefcase-upload","brightness-1","brightness-2","brightness-3","brightness-4","brightness-5","brightness-6","brightness-7","brightness-auto","broom","brush","bug","bulletin-board","bullhorn","bus","cached","cake","cake-layered","cake-variant","calculator","calendar","calendar-blank","calendar-check","calendar-clock","calendar-multiple","calendar-multiple-check","calendar-plus","calendar-remove","calendar-text","calendar-today","call-made","call-merge","call-missed","call-received","call-split","camcorder","camcorder-box","camcorder-box-off","camcorder-off","camera","camera-enhance","camera-front","camera-front-variant","camera-iris","camera-party-mode","camera-rear","camera-rear-variant","camera-switch","camera-timer","candycane","car","car-battery","car-connected","car-wash","carrot","cart","cart-outline","cart-plus","case-sensitive-alt","cash","cash-100","cash-multiple","cash-usd","cast","cast-connected","castle","cat","cellphone","cellphone-android","cellphone-basic","cellphone-dock","cellphone-iphone","cellphone-link","cellphone-link-off","cellphone-settings","certificate","chair-school","chart-arc","chart-areaspline","chart-bar","chart-histogram","chart-line","chart-pie","check","check-all","checkbox-blank","checkbox-blank-circle","checkbox-blank-circle-outline","checkbox-blank-outline","checkbox-marked","checkbox-marked-circle","checkbox-marked-circle-outline","checkbox-marked-outline","checkbox-multiple-blank","checkbox-multiple-blank-outline","checkbox-multiple-marked","checkbox-multiple-marked-outline","checkerboard","chemical-weapon","chevron-double-down","chevron-double-left","chevron-double-right","chevron-double-up","chevron-down","chevron-left","chevron-right","chevron-up","church","cisco-webex","city","clipboard","clipboard-account","clipboard-alert","clipboard-arrow-down","clipboard-arrow-left","clipboard-check","clipboard-outline","clipboard-text","clippy","clock","clock-end","clock-fast","clock-in","clock-out","clock-start","close","close-box","close-box-outline","close-circle","close-circle-outline","close-network","close-octagon","close-octagon-outline","closed-caption","cloud","cloud-check","cloud-circle","cloud-download","cloud-outline","cloud-off-outline","cloud-print","cloud-print-outline","cloud-upload","code-array","code-braces","code-brackets","code-equal","code-greater-than","code-greater-than-or-equal","code-less-than","code-less-than-or-equal","code-not-equal","code-not-equal-variant","code-parentheses","code-string","code-tags","codepen","coffee","coffee-to-go","coin","color-helper","comment","comment-account","comment-account-outline","comment-alert","comment-alert-outline","comment-check","comment-check-outline","comment-multiple-outline","comment-outline","comment-plus-outline","comment-processing","comment-processing-outline","comment-question-outline","comment-remove-outline","comment-text","comment-text-outline","compare","compass","compass-outline","console","contact-mail","content-copy","content-cut","content-duplicate","content-paste","content-save","content-save-all","contrast","contrast-box","contrast-circle","cookie","counter","cow","credit-card","credit-card-multiple","credit-card-scan","crop","crop-free","crop-landscape","crop-portrait","crop-square","crosshairs","crosshairs-gps","crown","cube","cube-outline","cube-send","cube-unfolded","cup","cup-water","currency-btc","currency-eur","currency-gbp","currency-inr","currency-ngn","currency-rub","currency-try","currency-usd","cursor-default","cursor-default-outline","cursor-move","cursor-pointer","database","database-minus","database-plus","debug-step-into","debug-step-out","debug-step-over","decimal-decrease","decimal-increase","delete","delete-variant","delta","deskphone","desktop-mac","desktop-tower","details","deviantart","diamond","creation","dice-1","dice-2","dice-3","dice-4","dice-5","dice-6","directions","disk-alert","disqus","disqus-outline","division","division-box","dns","domain","dots-horizontal","dots-vertical","download","drag","drag-horizontal","drag-vertical","drawing","drawing-box","dribbble","dribbble-box","drone","dropbox","drupal","duck","dumbbell","earth","earth-off","edge","eject","elevation-decline","elevation-rise","elevator","email","email-open","email-outline","email-secure","emoticon","emoticon-cool","emoticon-devil","emoticon-happy","emoticon-neutral","emoticon-poop","emoticon-sad","emoticon-tongue","engine","engine-outline","equal","equal-box","eraser","escalator","ethernet","ethernet-cable","ethernet-cable-off","etsy","evernote","exclamation","exit-to-app","export","eye","eye-off","eyedropper","eyedropper-variant","facebook","facebook-box","facebook-messenger","factory","fan","fast-forward","fax","ferry","file","file-chart","file-check","file-cloud","file-delimited","file-document","file-document-box","file-excel","file-excel-box","file-export","file-find","file-image","file-import","file-lock","file-multiple","file-music","file-outline","file-pdf","file-pdf-box","file-powerpoint","file-powerpoint-box","file-presentation-box","file-send","file-video","file-word","file-word-box","file-xml","film","filmstrip","filmstrip-off","filter","filter-outline","filter-remove","filter-remove-outline","filter-variant","fingerprint","fire","firefox","fish","flag","flag-checkered","flag-outline","flag-variant-outline","flag-triangle","flag-variant","flash","flash-auto","flash-off","flashlight","flashlight-off","flattr","flip-to-back","flip-to-front","floppy","flower","folder","folder-account","folder-download","folder-google-drive","folder-image","folder-lock","folder-lock-open","folder-move","folder-multiple","folder-multiple-image","folder-multiple-outline","folder-outline","folder-plus","folder-remove","folder-upload","food","food-apple","food-variant","football","football-australian","football-helmet","format-align-center","format-align-justify","format-align-left","format-align-right","format-bold","format-clear","format-color-fill","format-float-center","format-float-left","format-float-none","format-float-right","format-header-1","format-header-2","format-header-3","format-header-4","format-header-5","format-header-6","format-header-decrease","format-header-equal","format-header-increase","format-header-pound","format-indent-decrease","format-indent-increase","format-italic","format-line-spacing","format-list-bulleted","format-list-bulleted-type","format-list-numbers","format-paint","format-paragraph","format-quote-close","format-size","format-strikethrough","format-strikethrough-variant","format-subscript","format-superscript","format-text","format-textdirection-l-to-r","format-textdirection-r-to-l","format-underline","format-wrap-inline","format-wrap-square","format-wrap-tight","format-wrap-top-bottom","forum","forward","foursquare","fridge","fridge-filled","fridge-filled-bottom","fridge-filled-top","fullscreen","fullscreen-exit","function","gamepad","gamepad-variant","gas-station","gate","gauge","gavel","gender-female","gender-male","gender-male-female","gender-transgender","ghost","gift","git","github-box","github-circle","glass-flute","glass-mug","glass-stange","glass-tulip","glassdoor","glasses","gmail","gnome","google","google-cardboard","google-chrome","google-circles","google-circles-communities","google-circles-extended","google-circles-group","google-controller","google-controller-off","google-drive","google-earth","google-glass","google-nearby","google-pages","google-physical-web","google-play","google-plus","google-plus-box","google-translate","google-wallet","grid","grid-off","group","guitar-electric","guitar-pick","guitar-pick-outline","hand-pointing-right","hanger","google-hangouts","harddisk","headphones","headphones-box","headphones-settings","headset","headset-dock","headset-off","heart","heart-box","heart-box-outline","heart-broken","heart-outline","help","help-circle","hexagon","hexagon-outline","history","hololens","home","home-modern","home-variant","hops","hospital","hospital-building","hospital-marker","hotel","houzz","houzz-box","human","human-child","human-male-female","image","image-album","image-area","image-area-close","image-broken","image-broken-variant","image-filter","image-filter-black-white","image-filter-center-focus","image-filter-center-focus-weak","image-filter-drama","image-filter-frames","image-filter-hdr","image-filter-none","image-filter-tilt-shift","image-filter-vintage","image-multiple","import-icon","inbox-arrow-down","information","information-outline","instagram","instapaper","internet-explorer","invert-colors","jeepney","jira","jsfiddle","keg","key","key-change","key-minus","key-plus","key-remove","key-variant","keyboard","keyboard-backspace","keyboard-caps","keyboard-close","keyboard-off","keyboard-return","keyboard-tab","keyboard-variant","kodi","label","label-outline","lan","lan-connect","lan-disconnect","lan-pending","language-csharp","language-css3","language-html5","language-javascript","language-php","language-python","language-python-text","laptop","laptop-chromebook","laptop-mac","laptop-windows","lastfm","launch","layers","layers-off","leaf","led-off","led-on","led-outline","led-variant-off","led-variant-on","led-variant-outline","library","library-books","library-music","library-plus","lightbulb","lightbulb-outline","link","link-off","link-variant","link-variant-off","linkedin","linkedin-box","linux","lock","lock-open","lock-open-outline","lock-outline","login","logout","looks","loupe","lumx","magnet","magnet-on","magnify","magnify-minus","magnify-plus","mail-ru","map","map-marker","map-marker-circle","map-marker-multiple","map-marker-off","map-marker-radius","margin","markdown","marker-check","glass-cocktail","material-ui","math-compass","maxcdn","medium","memory","menu","menu-down","menu-left","menu-right","menu-up","message","message-alert","message-draw","message-image","message-outline","message-processing","message-reply","message-reply-text","message-text","message-text-outline","message-video","microphone","microphone-off","microphone-outline","microphone-settings","microphone-variant","microphone-variant-off","microsoft","minecraft","minus","minus-box","minus-circle","minus-circle-outline","minus-network","monitor","monitor-multiple","more","motorbike","mouse","mouse-off","mouse-variant","mouse-variant-off","movie","multiplication","multiplication-box","music-box","music-box-outline","music-circle","music-note","music-note-eighth","music-note-half","music-note-off","music-note-quarter","music-note-sixteenth","music-note-whole","nature","nature-people","navigation","needle","smoke-detector","thermostat","new-box","newspaper","nfc","nfc-tap","nfc-variant","nodejs","note","note-outline","note-plus","note-plus-outline","note-text","notification-clear-all","numeric","numeric-0-box","numeric-0-box-multiple-outline","numeric-0-box-outline","numeric-1-box","numeric-1-box-multiple-outline","numeric-1-box-outline","numeric-2-box","numeric-2-box-multiple-outline","numeric-2-box-outline","numeric-3-box","numeric-3-box-multiple-outline","numeric-3-box-outline","numeric-4-box","numeric-4-box-multiple-outline","numeric-4-box-outline","numeric-5-box","numeric-5-box-multiple-outline","numeric-5-box-outline","numeric-6-box","numeric-6-box-multiple-outline","numeric-6-box-outline","numeric-7-box","numeric-7-box-multiple-outline","numeric-7-box-outline","numeric-8-box","numeric-8-box-multiple-outline","numeric-8-box-outline","numeric-9-box","numeric-9-box-multiple-outline","numeric-9-box-outline","numeric-9-plus-box","numeric-9-plus-box-multiple-outline","numeric-9-plus-box-outline","nutrition","octagon","octagon-outline","odnoklassniki","office","oil","oil-temperature","omega","onedrive","open-in-app","open-in-new","openid","opera","ornament","ornament-variant","inbox-arrow-up","owl","package-icon","package-down","package-up","package-variant","package-variant-closed","palette","palette-advanced","panda","pandora","panorama","panorama-fisheye","panorama-horizontal","panorama-vertical","panorama-wide-angle","paper-cut-vertical","paperclip","parking","pause","pause-circle","pause-circle-outline","pause-octagon","pause-octagon-outline","paw","pen","pencil","pencil-box","pencil-box-outline","pencil-lock","pencil-off","percent","pharmacy","phone","phone-bluetooth","phone-forward","phone-hangup","phone-in-talk","phone-incoming","phone-locked","phone-log","phone-missed","phone-outgoing","phone-paused","phone-settings","phone-voip","pi","pi-box","pig","pill","pin","pin-off","pine-tree","pine-tree-box","pinterest","pinterest-box","pizza","play","play-box-outline","play-circle","play-circle-outline","play-pause","play-protected-content","playlist-minus","playlist-play","playlist-plus","playlist-remove","playstation","plus","plus-box","plus-circle","plus-circle-multiple-outline","plus-circle-outline","plus-network","plus-one","pocket","pokeball","polaroid","poll","poll-box","polymer","popcorn","pound","pound-box","power","power-settings","power-socket","presentation","presentation-play","printer","printer-3d","printer-alert","professional-hexagon","projector","projector-screen","pulse","puzzle","qrcode","qrcode-scan","quadcopter","quality-high","quicktime","radar","radiator","radio","radio-handheld","radio-tower","radioactive","radiobox-blank","radiobox-marked","raspberrypi","ray-end","ray-end-arrow","ray-start","ray-start-arrow","ray-start-end","ray-vertex","lastpass","read","youtube-tv","receipt","record","record-rec","recycle","reddit","redo","redo-variant","refresh","regex","relative-scale","reload","remote","rename-box","repeat","repeat-off","repeat-once","replay","reply","reply-all","reproduction","resize-bottom-right","responsive","rewind","ribbon","road","road-variant","rocket","rotate-3d","rotate-left","rotate-left-variant","rotate-right","rotate-right-variant","router-wireless","routes","rss","rss-box","ruler","run-fast","sale","satellite","satellite-variant","scale","scale-bathroom","school","screen-rotation","screen-rotation-lock","screwdriver","script","sd","seal","seat-flat","seat-flat-angled","seat-individual-suite","seat-legroom-extra","seat-legroom-normal","seat-legroom-reduced","seat-recline-extra","seat-recline-normal","security","security-network","select","select-all","select-inverse","select-off","selection","send","server","server-minus","server-network","server-network-off","server-off","server-plus","server-remove","server-security","settings","settings-box","shape-plus","share","share-variant","shield","shield-outline","shopping","shopping-music","shredder","shuffle","shuffle-disabled","shuffle-variant","sigma","sign-caution","signal","silverware","silverware-fork","silverware-spoon","silverware-variant","sim","sim-alert","sim-off","sitemap","skip-backward","skip-forward","skip-next","skip-previous","skype","skype-business","slack","sleep","sleep-off","smoking","smoking-off","snapchat","snowman","soccer","sofa","sort","sort-alphabetical","sort-ascending","sort-descending","sort-numeric","sort-variant","soundcloud","source-fork","source-pull","speaker","speaker-off","speedometer","spellcheck","spotify","spotlight","spotlight-beam","square-inc","square-inc-cash","stack-overflow","stairs","star","star-circle","star-half","star-off","star-outline","steam","steering","step-backward","step-backward-2","step-forward","step-forward-2","stethoscope","stocking","stop","store","store-24-hour","stove","subway-variant","sunglasses","swap-horizontal","swap-vertical","swim","switch-icon","sword","sync","sync-alert","sync-off","tab","tab-unselected","table","table-column-plus-after","table-column-plus-before","table-column-remove","table-column-width","table-edit","table-large","table-row-height","table-row-plus-after","table-row-plus-before","table-row-remove","tablet","tablet-android","tablet-ipad","tag","tag-faces","tag-multiple","tag-outline","tag-text-outline","target","taxi","teamviewer","telegram","television","television-guide","temperature-celsius","temperature-fahrenheit","temperature-kelvin","tennis","tent","terrain","text-to-speech","text-to-speech-off","texture","theater","theme-light-dark","thermometer","thermometer-lines","thumb-down","thumb-down-outline","thumb-up","thumb-up-outline","thumbs-up-down","ticket","ticket-account","ticket-confirmation","tie","timelapse","timer","timer-10","timer-3","timer-off","timer-sand","timetable","toggle-switch","toggle-switch-off","tooltip","tooltip-edit","tooltip-image","tooltip-outline","tooltip-outline-plus","tooltip-text","tooth-outline","tor","traffic-light","train","tram","transcribe","transcribe-close","transfer","tree","trello","trending-down","trending-neutral","trending-up","triangle","triangle-outline","trophy","trophy-award","trophy-outline","trophy-variant","trophy-variant-outline","truck","truck-delivery","tshirt-crew","tshirt-v","tumblr","tumblr-reblog","twitch","twitter","twitter-box","twitter-circle","twitter-retweet","ubuntu","umbraco","umbrella","umbrella-outline","undo","undo-variant","unfold-less-horizontal","unfold-more-horizontal","ungroup","untappd","upload","usb","vector-arrange-above","vector-arrange-below","vector-circle","vector-circle-variant","vector-combine","vector-curve","vector-difference","vector-difference-ab","vector-difference-ba","vector-intersection","vector-line","vector-point","vector-polygon","vector-polyline","vector-selection","vector-triangle","vector-union","verified","vibrate","video","video-off","video-switch","view-agenda","view-array","view-carousel","view-column","view-dashboard","view-day","view-grid","view-headline","view-list","view-module","view-quilt","view-stream","view-week","vimeo","venmo","vk","vk-box","vk-circle","vlc","voicemail","volume-high","volume-low","volume-medium","volume-off","vpn","walk","wallet","wallet-giftcard","wallet-membership","wallet-travel","wan","watch","watch-export","watch-import","water","water-off","water-percent","water-pump","weather-cloudy","weather-fog","weather-hail","weather-lightning","weather-night","weather-partlycloudy","weather-pouring","weather-rainy","weather-snowy","weather-sunny","weather-sunset","weather-sunset-down","weather-sunset-up","weather-windy","weather-windy-variant","web","webcam","weight","weight-kilogram","whatsapp","wheelchair-accessibility","white-balance-auto","white-balance-incandescent","white-balance-iridescent","white-balance-sunny","wifi","wifi-off","wii","wikipedia","window-close","window-closed","window-maximize","window-minimize","window-open","window-restore","windows","wordpress","worker","wrap","wrench","wunderlist","xbox","xbox-controller","xbox-controller-off","xda","xing","xing-box","xing-circle","xml","yeast","yelp","youtube","zip-box","surround-sound","vector-rectangle","playlist-check","format-line-style","format-line-weight","translate","voice","opacity","near-me","clock-alert","human-pregnant","sticker","scale-balance","account-card-details","account-multiple-minus","airplane-landing","airplane-takeoff","alert-circle-outline","altimeter","animation","book-minus","book-open-page-variant","book-plus","boombox","bullseye","comment-remove","camera-off","check-circle","check-circle-outline","candle","chart-bubble","credit-card-off","cup-off","copyright","cursor-text","delete-forever","delete-sweep","dice-d20","dice-d4","dice-d6","dice-d8","disk","email-open-outline","email-variant","ev-station","food-fork-drink","food-off","format-title","google-maps","heart-pulse","highway","home-map-marker","incognito","kettle","lock-plus","login-variant","logout-variant","music-note-bluetooth","music-note-bluetooth-off","page-first","page-last","phone-classic","priority-high","priority-low","qqchat","pool","rounded-corner","rowing","saxophone","signal-variant","stack-exchange","subdirectory-arrow-left","subdirectory-arrow-right","textbox","violin","visualstudio","wechat","watermark","file-hidden","application","arrow-collapse","arrow-expand","bowl","bridge","buffer","chip","content-save-settings","dialpad","dictionary","format-horizontal-align-center","format-horizontal-align-left","format-horizontal-align-right","format-vertical-align-bottom","format-vertical-align-center","format-vertical-align-top","hackernews","help-circle-outline","json","lambda","matrix","meteor","mixcloud","sigma-lower","source-branch","source-merge","tune","webhook","account-settings","account-settings-variant","apple-keyboard-caps","apple-keyboard-command","apple-keyboard-control","apple-keyboard-option","apple-keyboard-shift","box-shadow","cards","cards-outline","cards-playing-outline","checkbox-multiple-blank-circle","checkbox-multiple-blank-circle-outline","checkbox-multiple-marked-circle","checkbox-multiple-marked-circle-outline","cloud-sync","collage","directions-fork","eraser-variant","face","face-profile","file-tree","format-annotation-plus","gas-cylinder","grease-pencil","human-female","human-greeting","human-handsdown","human-handsup","human-male","information-variant","lead-pencil","map-marker-minus","map-marker-plus","marker","message-plus","microscope","move-resize","move-resize-variant","paw-off","phone-minus","phone-plus","pot","pot-mix","serial-port","shape-circle-plus","shape-polygon-plus","shape-rectangle-plus","shape-square-plus","skip-next-circle","skip-next-circle-outline","skip-previous-circle","skip-previous-circle-outline","spray","stop-circle","stop-circle-outline","test-tube","text-shadow","tune-vertical","cart-off","chart-gantt","chart-scatterplot-hexbin","chart-timeline","discord","file-restore","language-c","language-cpp","xaml","bandcamp","credit-card-plus","itunes","bow-tie","calendar-range","currency-usd-off","flash-red-eye","oar","piano","weather-lightning-rainy","weather-snowy-rainy","yin-yang","tower-beach","tower-fire","delete-circle","dna","hamburger","gondola","inbox","reorder-horizontal","reorder-vertical","security-home","tag-heart","skull","solid","alarm-snooze","baby-buggy","beaker","bomb","calendar-question","camera-burst","code-tags-check","coins","crop-rotate","developer-board","do-not-disturb","do-not-disturb-off","douban","emoticon-dead","emoticon-excited","folder-star","format-color-text","format-section","gradient","home-outline","message-bulleted","message-bulleted-off","nuke","power-plug","power-plug-off","publish","restore","robot","format-rotate-90","scanner","subway","timer-sand-empty","transit-transfer","unity","update","watch-vibrate","angular","dolby","emby","lamp","menu-down-outline","menu-up-outline","note-multiple","note-multiple-outline","plex","plane-shield","account-edit","alert-decagram","all-inclusive","angularjs","arrow-down-box","arrow-left-box","arrow-right-box","arrow-up-box","asterisk","bomb-off","bootstrap","cards-variant","clipboard-flow","close-outline","coffee-outline","contacts","delete-empty","earth-box","earth-box-off","email-alert","eye-outline","eye-off-outline","fast-forward-outline","feather","find-replace","flash-outline","format-font","format-page-break","format-pilcrow","garage","garage-open","github-face","google-keep","google-photos","heart-half-full","heart-half","heart-half-outline","hexagon-multiple","hook","hook-off","infinity","language-swift","language-typescript","laptop-off","lightbulb-on","lightbulb-on-outline","lock-pattern","loop","magnify-minus-outline","magnify-plus-outline","mailbox","medical-bag","message-settings","message-settings-variant","minus-box-outline","network","download-network","help-network","upload-network","npm","nut","octagram","page-layout-body","page-layout-footer","page-layout-header","page-layout-sidebar-left","page-layout-sidebar-right","pencil-circle","pentagon","pentagon-outline","pillar","pistol","plus-box-outline","plus-outline","prescription","printer-settings","react","restart","rewind-outline","rhombus","rhombus-outline","robot-vacuum","run","search-web","shovel","shovel-off","signal-2g","signal-3g","signal-4g","signal-hspa","signal-hspa-plus","snowflake","source-commit","source-commit-end","source-commit-end-local","source-commit-local","source-commit-next-local","source-commit-start","source-commit-start-next-local","speaker-wireless","stadium","svg","tag-plus","tag-remove","ticket-percent","tilde","treasure-chest","truck-trailer","view-parallel","view-sequential","washing-machine","webpack","widgets","wiiu","arrow-down-bold","arrow-down-bold-box","arrow-down-bold-box-outline","arrow-left-bold","arrow-left-bold-box","arrow-left-bold-box-outline","arrow-right-bold","arrow-right-bold-box","arrow-right-bold-box-outline","arrow-up-bold","arrow-up-bold-box","arrow-up-bold-box-outline","cancel","file-account","gesture-double-tap","gesture-swipe-down","gesture-swipe-left","gesture-swipe-right","gesture-swipe-up","gesture-tap","gesture-two-double-tap","gesture-two-tap","humble-bundle","kickstarter","netflix","onenote","periscope","uber","vector-radius","xbox-controller-battery-alert","xbox-controller-battery-empty","xbox-controller-battery-full","xbox-controller-battery-low","xbox-controller-battery-medium","xbox-controller-battery-unknown","clipboard-plus","file-plus","format-align-bottom","format-align-middle","format-align-top","format-list-checks","format-quote-open","grid-large","heart-off","music","music-off","tab-plus","volume-plus","volume-minus","volume-mute","unfold-less-vertical","unfold-more-vertical","taco","square-outline","square","circle","circle-outline","alert-octagram","atom","ceiling-light","chart-bar-stacked","chart-line-stacked","decagram","decagram-outline","dice-multiple","dice-d10","folder-open","guitar-acoustic","loading","lock-reset","ninja","octagram-outline","pencil-circle-outline","selection-off","set-all","set-center","set-center-right","set-left","set-left-center","set-left-right","set-none","set-right","shield-half-full","sign-direction","sign-text","signal-off","square-root","sticker-emoji","summit","sword-cross","truck-fast","yammer","cast-off","help-box","timer-sand-full","waves","alarm-bell","alarm-light","android-head","approval","arrow-collapse-down","arrow-collapse-left","arrow-collapse-right","arrow-collapse-up","arrow-expand-down","arrow-expand-left","arrow-expand-right","arrow-expand-up","book-secure","book-unsecure","bus-articulated-end","bus-articulated-front","bus-double-decker","bus-school","bus-side","camera-gopro","camera-metering-center","camera-metering-matrix","camera-metering-partial","camera-metering-spot","cannabis","car-convertible","car-estate","car-hatchback","car-pickup","car-side","car-sports","caravan","cctv","chart-donut","chart-donut-variant","chart-line-variant","chili-hot","chili-medium","chili-mild","cloud-braces","cloud-tags","console-line","corn","currency-chf","currency-cny","currency-eth","currency-jpy","currency-krw","currency-sign","currency-twd","desktop-classic","dip-switch","donkey","dots-horizontal-circle","dots-vertical-circle","ear-hearing","elephant","eventbrite","food-croissant","forklift","fuel","gesture","google-analytics","google-assistant","headphones-off","high-definition","home-assistant","home-automation","home-circle","language-go","language-r","lava-lamp","led-strip","locker","locker-multiple","map-marker-outline","metronome","metronome-tick","micro-sd","mixer","movie-roll","mushroom","mushroom-outline","nintendo-switch","null-icon","passport","periodic-table-co2","pipe","pipe-disconnected","power-socket-eu","power-socket-uk","power-socket-us","rice","ring","sass","send-secure","soy-sauce","standard-definition","surround-sound-2-0","surround-sound-3-1","surround-sound-5-1","surround-sound-7-1","television-classic","textbox-password","thought-bubble","thought-bubble-outline","trackpad","ultra-high-definition","van-passenger","van-utility","vanish","video-3d","wall","xmpp","account-multiple-plus-outline","account-plus-outline","google-allo","artist","atlassian","azure","basketball","battery-charging-wireless","battery-charging-wireless-10","battery-charging-wireless-20","battery-charging-wireless-30","battery-charging-wireless-40","battery-charging-wireless-50","battery-charging-wireless-60","battery-charging-wireless-70","battery-charging-wireless-80","battery-charging-wireless-90","battery-charging-wireless-alert","battery-charging-wireless-outline","bitcoin","briefcase-outline","cellphone-wireless","clover","comment-question","content-save-outline","delete-restore","door","door-closed","door-open","fan-off","file-percent","finance","flash-circle","floor-plan","forum-outline","golf","google-home","guy-fawkes-mask","home-account","home-heart","hot-tub","hulu","ice-cream","image-off","karate","ladybug","notebook","phone-return","poker-chip","shape","shape-outline","ship-wheel","soccer-field","table-column","table-of-contents","table-row","table-settings","television-box","television-classic-off","television-off","towing","upload-multiple","video-4k-box","video-input-antenna","video-input-component","video-input-hdmi","video-input-svideo","view-dashboard-variant","vuejs","xamarin","xamarin-outline","youtube-creator-studio","youtube-gaming","account-group","accusoft","airport","arrow-collapse-horizontal","arrow-collapse-vertical","arrow-expand-horizontal","arrow-expand-vertical","augmented-reality","badminton","baseball","baseball-bat","bottle-wine","check-outline","checkbox-intermediate","chess-king","chess-knight","chess-pawn","chess-queen","chess-rook","chess-bishop","clipboard-pulse","clipboard-pulse-outline","comment-multiple","comment-text-multiple","comment-text-multiple-outline","crane","curling","currency-bdt","currency-kzt","database-search","dice-d12","docker","doorbell-video","ethereum","eye-plus","eye-plus-outline","eye-settings","eye-settings-outline","file-question","folder-network","function-variant","garage-alert","gauge-empty","gauge-full","gauge-low","glass-wine","graphql","high-definition-box","hockey-puck","hockey-sticks","home-alert","image-plus","jquery","lifebuoy","mixed-reality","nativescript","onepassword","patreon","paypal","peace","phone-rotate-landscape","phone-rotate-portrait","pier","pier-crane","pipe-leak","piston","play-network","reminder","room-service","salesforce","security-account","teach","thermostat-box","tractor","vector-ellipse","virtual-reality","watch-export-variant","watch-import-variant","watch-variant","weather-hurricane","account-heart","alien","anvil","battery-charging-10","battery-charging-50","battery-charging-70","battery-charging-outline","bed-empty","border-all-variant","border-bottom-variant","border-left-variant","border-none-variant","border-right-variant","border-top-variant","calendar-edit","clipboard-check-outline","console-network","file-compare","fire-truck","folder-key","folder-key-network","gpu","home-currency-usd","inbox-multiple","language-lua","lock-smart","microphone-minus","microphone-plus","palette-swatch","periodic-table","pickaxe","qrcode-edit","remote-desktop","sausage","settings-outline","signal-cellular-1","signal-cellular-2","signal-cellular-3","signal-cellular-outline","ssh","swap-horizontal-variant","swap-vertical-variant","tooth","train-variant","account-multiple-check","amazon-alexa","arch","axe","bullseye-arrow","bus-clock","camera-account","camera-image","car-limousine","cards-club","cards-diamond","cards-heart","cards-spade","cellphone-text","cellphone-message","chart-multiline","circle-edit-outline","cogs","credit-card-settings","death-star","death-star-variant","debian","fedora","file-undo","floor-lamp","folder-edit","format-columns","freebsd","gate-and","gate-nand","gate-nor","gate-not","gate-or","gate-xnor","gate-xor","gentoo","globe-model","hammer","home-lock","home-lock-open","linux-mint","lock-alert","lock-question","map-marker-distance","midi","midi-port","nas","network-strength-1","network-strength-1-alert","network-strength-2","network-strength-2-alert","network-strength-3","network-strength-3-alert","network-strength-4","network-strength-4-alert","network-strength-off","network-strength-off-outline","network-strength-outline","play-speed","playlist-edit","power-cycle","power-off","power-on","power-sleep","power-socket-au","power-standby","rabbit","robot-vacuum-variant","satellite-uplink","scanner-off","slackware","square-edit-outline","steam-box","steering-off","table-search","tag-minus","test-tube-empty","test-tube-off","ticket-outline","track-light","transition","transition-masked","tumble-dryer","tumblr-box","video-account","video-image","video-stabilization","wall-sconce","wall-sconce-flat","wall-sconce-variant","wifi-strength-1","wifi-strength-1-alert","wifi-strength-1-lock","wifi-strength-2","wifi-strength-2-alert","wifi-strength-2-lock","wifi-strength-3","wifi-strength-3-alert","wifi-strength-3-lock","wifi-strength-4","wifi-strength-4-alert","wifi-strength-4-lock","wifi-strength-alert-outline","wifi-strength-lock-outline","wifi-strength-off","wifi-strength-off-outline","wifi-strength-outline","pin-off-outline","pin-outline","share-outline","trackpad-lock"}; -------------------------------------------------------------------------------- /app/src/main/assets/enumjavaenum.java: -------------------------------------------------------------------------------- 1 | {VECTOR_SQUARE,ACCESS_POINT,ACCESS_POINT_NETWORK,ACCOUNT,ACCOUNT_ALERT,ACCOUNT_BOX,ACCOUNT_BOX_OUTLINE,ACCOUNT_CHECK,ACCOUNT_CIRCLE,ACCOUNT_CONVERT,ACCOUNT_KEY,ACCOUNT_LOCATION,ACCOUNT_MINUS,ACCOUNT_MULTIPLE,ACCOUNT_MULTIPLE_OUTLINE,ACCOUNT_MULTIPLE_PLUS,ACCOUNT_NETWORK,ACCOUNT_OFF,ACCOUNT_OUTLINE,ACCOUNT_PLUS,ACCOUNT_REMOVE,ACCOUNT_SEARCH,ACCOUNT_STAR,ORBIT,ACCOUNT_SWITCH,ADJUST,AIR_CONDITIONER,AIRBALLOON,AIRPLANE,AIRPLANE_OFF,AIRPLAY,ALARM,ALARM_CHECK,ALARM_MULTIPLE,ALARM_OFF,ALARM_PLUS,ALBUM,ALERT,ALERT_BOX,ALERT_CIRCLE,ALERT_OCTAGON,ALERT_OUTLINE,ALPHA,ALPHABETICAL,AMAZON,AMAZON_DRIVE,AMBULANCE,AMPLIFIER,ANCHOR,ANDROID,ANDROID_DEBUG_BRIDGE,ANDROID_STUDIO,APPLE,APPLE_FINDER,APPLE_IOS,APPLE_ICLOUD,APPLE_SAFARI,FONT_AWESOME,APPS,ARCHIVE,ARRANGE_BRING_FORWARD,ARRANGE_BRING_TO_FRONT,ARRANGE_SEND_BACKWARD,ARRANGE_SEND_TO_BACK,ARROW_ALL,ARROW_BOTTOM_LEFT,ARROW_BOTTOM_RIGHT,ARROW_COLLAPSE_ALL,ARROW_DOWN,ARROW_DOWN_THICK,ARROW_DOWN_BOLD_CIRCLE,ARROW_DOWN_BOLD_CIRCLE_OUTLINE,ARROW_DOWN_BOLD_HEXAGON_OUTLINE,ARROW_DOWN_DROP_CIRCLE,ARROW_DOWN_DROP_CIRCLE_OUTLINE,ARROW_EXPAND_ALL,ARROW_LEFT,ARROW_LEFT_THICK,ARROW_LEFT_BOLD_CIRCLE,ARROW_LEFT_BOLD_CIRCLE_OUTLINE,ARROW_LEFT_BOLD_HEXAGON_OUTLINE,ARROW_LEFT_DROP_CIRCLE,ARROW_LEFT_DROP_CIRCLE_OUTLINE,ARROW_RIGHT,ARROW_RIGHT_THICK,ARROW_RIGHT_BOLD_CIRCLE,ARROW_RIGHT_BOLD_CIRCLE_OUTLINE,ARROW_RIGHT_BOLD_HEXAGON_OUTLINE,ARROW_RIGHT_DROP_CIRCLE,ARROW_RIGHT_DROP_CIRCLE_OUTLINE,ARROW_TOP_LEFT,ARROW_TOP_RIGHT,ARROW_UP,ARROW_UP_THICK,ARROW_UP_BOLD_CIRCLE,ARROW_UP_BOLD_CIRCLE_OUTLINE,ARROW_UP_BOLD_HEXAGON_OUTLINE,ARROW_UP_DROP_CIRCLE,ARROW_UP_DROP_CIRCLE_OUTLINE,ASSISTANT,AT,ATTACHMENT,AUDIOBOOK,AUTO_FIX,AUTO_UPLOAD,AUTORENEW,AV_TIMER,BABY,BACKBURGER,BACKSPACE,BACKUP_RESTORE,BANK,BARCODE,BARCODE_SCAN,BARLEY,BARREL,BASECAMP,BASKET,BASKET_FILL,BASKET_UNFILL,BATTERY,BATTERY_10,BATTERY_20,BATTERY_30,BATTERY_40,BATTERY_50,BATTERY_60,BATTERY_70,BATTERY_80,BATTERY_90,BATTERY_ALERT,BATTERY_CHARGING,BATTERY_CHARGING_100,BATTERY_CHARGING_20,BATTERY_CHARGING_30,BATTERY_CHARGING_40,BATTERY_CHARGING_60,BATTERY_CHARGING_80,BATTERY_CHARGING_90,BATTERY_MINUS,BATTERY_NEGATIVE,BATTERY_OUTLINE,BATTERY_PLUS,BATTERY_POSITIVE,BATTERY_UNKNOWN,BEACH,FLASK,FLASK_EMPTY,FLASK_EMPTY_OUTLINE,FLASK_OUTLINE,BEATS,BEER,BEHANCE,BELL,BELL_OFF,BELL_OUTLINE,BELL_PLUS,BELL_RING,BELL_RING_OUTLINE,BELL_SLEEP,BETA,BIBLE,BIKE,BING,BINOCULARS,BIO,BIOHAZARD,BITBUCKET,BLACK_MESA,BLACKBERRY,BLENDER,BLINDS,BLOCK_HELPER,BLOGGER,BLUETOOTH,BLUETOOTH_AUDIO,BLUETOOTH_CONNECT,BLUETOOTH_OFF,BLUETOOTH_SETTINGS,BLUETOOTH_TRANSFER,BLUR,BLUR_LINEAR,BLUR_OFF,BLUR_RADIAL,BONE,BOOK,BOOK_MULTIPLE,BOOK_MULTIPLE_VARIANT,BOOK_OPEN,BOOK_OPEN_VARIANT,BOOK_VARIANT,BOOKMARK,BOOKMARK_CHECK,BOOKMARK_MUSIC,BOOKMARK_OUTLINE,BOOKMARK_PLUS_OUTLINE,BOOKMARK_PLUS,BOOKMARK_REMOVE,BORDER_ALL,BORDER_BOTTOM,BORDER_COLOR,BORDER_HORIZONTAL,BORDER_INSIDE,BORDER_LEFT,BORDER_NONE,BORDER_OUTSIDE,BORDER_RIGHT,BORDER_STYLE,BORDER_TOP,BORDER_VERTICAL,BOWLING,BOX,BOX_CUTTER,BRIEFCASE,BRIEFCASE_CHECK,BRIEFCASE_DOWNLOAD,BRIEFCASE_UPLOAD,BRIGHTNESS_1,BRIGHTNESS_2,BRIGHTNESS_3,BRIGHTNESS_4,BRIGHTNESS_5,BRIGHTNESS_6,BRIGHTNESS_7,BRIGHTNESS_AUTO,BROOM,BRUSH,BUG,BULLETIN_BOARD,BULLHORN,BUS,CACHED,CAKE,CAKE_LAYERED,CAKE_VARIANT,CALCULATOR,CALENDAR,CALENDAR_BLANK,CALENDAR_CHECK,CALENDAR_CLOCK,CALENDAR_MULTIPLE,CALENDAR_MULTIPLE_CHECK,CALENDAR_PLUS,CALENDAR_REMOVE,CALENDAR_TEXT,CALENDAR_TODAY,CALL_MADE,CALL_MERGE,CALL_MISSED,CALL_RECEIVED,CALL_SPLIT,CAMCORDER,CAMCORDER_BOX,CAMCORDER_BOX_OFF,CAMCORDER_OFF,CAMERA,CAMERA_ENHANCE,CAMERA_FRONT,CAMERA_FRONT_VARIANT,CAMERA_IRIS,CAMERA_PARTY_MODE,CAMERA_REAR,CAMERA_REAR_VARIANT,CAMERA_SWITCH,CAMERA_TIMER,CANDYCANE,CAR,CAR_BATTERY,CAR_CONNECTED,CAR_WASH,CARROT,CART,CART_OUTLINE,CART_PLUS,CASE_SENSITIVE_ALT,CASH,CASH_100,CASH_MULTIPLE,CASH_USD,CAST,CAST_CONNECTED,CASTLE,CAT,CELLPHONE,CELLPHONE_ANDROID,CELLPHONE_BASIC,CELLPHONE_DOCK,CELLPHONE_IPHONE,CELLPHONE_LINK,CELLPHONE_LINK_OFF,CELLPHONE_SETTINGS,CERTIFICATE,CHAIR_SCHOOL,CHART_ARC,CHART_AREASPLINE,CHART_BAR,CHART_HISTOGRAM,CHART_LINE,CHART_PIE,CHECK,CHECK_ALL,CHECKBOX_BLANK,CHECKBOX_BLANK_CIRCLE,CHECKBOX_BLANK_CIRCLE_OUTLINE,CHECKBOX_BLANK_OUTLINE,CHECKBOX_MARKED,CHECKBOX_MARKED_CIRCLE,CHECKBOX_MARKED_CIRCLE_OUTLINE,CHECKBOX_MARKED_OUTLINE,CHECKBOX_MULTIPLE_BLANK,CHECKBOX_MULTIPLE_BLANK_OUTLINE,CHECKBOX_MULTIPLE_MARKED,CHECKBOX_MULTIPLE_MARKED_OUTLINE,CHECKERBOARD,CHEMICAL_WEAPON,CHEVRON_DOUBLE_DOWN,CHEVRON_DOUBLE_LEFT,CHEVRON_DOUBLE_RIGHT,CHEVRON_DOUBLE_UP,CHEVRON_DOWN,CHEVRON_LEFT,CHEVRON_RIGHT,CHEVRON_UP,CHURCH,CISCO_WEBEX,CITY,CLIPBOARD,CLIPBOARD_ACCOUNT,CLIPBOARD_ALERT,CLIPBOARD_ARROW_DOWN,CLIPBOARD_ARROW_LEFT,CLIPBOARD_CHECK,CLIPBOARD_OUTLINE,CLIPBOARD_TEXT,CLIPPY,CLOCK,CLOCK_END,CLOCK_FAST,CLOCK_IN,CLOCK_OUT,CLOCK_START,CLOSE,CLOSE_BOX,CLOSE_BOX_OUTLINE,CLOSE_CIRCLE,CLOSE_CIRCLE_OUTLINE,CLOSE_NETWORK,CLOSE_OCTAGON,CLOSE_OCTAGON_OUTLINE,CLOSED_CAPTION,CLOUD,CLOUD_CHECK,CLOUD_CIRCLE,CLOUD_DOWNLOAD,CLOUD_OUTLINE,CLOUD_OFF_OUTLINE,CLOUD_PRINT,CLOUD_PRINT_OUTLINE,CLOUD_UPLOAD,CODE_ARRAY,CODE_BRACES,CODE_BRACKETS,CODE_EQUAL,CODE_GREATER_THAN,CODE_GREATER_THAN_OR_EQUAL,CODE_LESS_THAN,CODE_LESS_THAN_OR_EQUAL,CODE_NOT_EQUAL,CODE_NOT_EQUAL_VARIANT,CODE_PARENTHESES,CODE_STRING,CODE_TAGS,CODEPEN,COFFEE,COFFEE_TO_GO,COIN,COLOR_HELPER,COMMENT,COMMENT_ACCOUNT,COMMENT_ACCOUNT_OUTLINE,COMMENT_ALERT,COMMENT_ALERT_OUTLINE,COMMENT_CHECK,COMMENT_CHECK_OUTLINE,COMMENT_MULTIPLE_OUTLINE,COMMENT_OUTLINE,COMMENT_PLUS_OUTLINE,COMMENT_PROCESSING,COMMENT_PROCESSING_OUTLINE,COMMENT_QUESTION_OUTLINE,COMMENT_REMOVE_OUTLINE,COMMENT_TEXT,COMMENT_TEXT_OUTLINE,COMPARE,COMPASS,COMPASS_OUTLINE,CONSOLE,CONTACT_MAIL,CONTENT_COPY,CONTENT_CUT,CONTENT_DUPLICATE,CONTENT_PASTE,CONTENT_SAVE,CONTENT_SAVE_ALL,CONTRAST,CONTRAST_BOX,CONTRAST_CIRCLE,COOKIE,COUNTER,COW,CREDIT_CARD,CREDIT_CARD_MULTIPLE,CREDIT_CARD_SCAN,CROP,CROP_FREE,CROP_LANDSCAPE,CROP_PORTRAIT,CROP_SQUARE,CROSSHAIRS,CROSSHAIRS_GPS,CROWN,CUBE,CUBE_OUTLINE,CUBE_SEND,CUBE_UNFOLDED,CUP,CUP_WATER,CURRENCY_BTC,CURRENCY_EUR,CURRENCY_GBP,CURRENCY_INR,CURRENCY_NGN,CURRENCY_RUB,CURRENCY_TRY,CURRENCY_USD,CURSOR_DEFAULT,CURSOR_DEFAULT_OUTLINE,CURSOR_MOVE,CURSOR_POINTER,DATABASE,DATABASE_MINUS,DATABASE_PLUS,DEBUG_STEP_INTO,DEBUG_STEP_OUT,DEBUG_STEP_OVER,DECIMAL_DECREASE,DECIMAL_INCREASE,DELETE,DELETE_VARIANT,DELTA,DESKPHONE,DESKTOP_MAC,DESKTOP_TOWER,DETAILS,DEVIANTART,DIAMOND,CREATION,DICE_1,DICE_2,DICE_3,DICE_4,DICE_5,DICE_6,DIRECTIONS,DISK_ALERT,DISQUS,DISQUS_OUTLINE,DIVISION,DIVISION_BOX,DNS,DOMAIN,DOTS_HORIZONTAL,DOTS_VERTICAL,DOWNLOAD,DRAG,DRAG_HORIZONTAL,DRAG_VERTICAL,DRAWING,DRAWING_BOX,DRIBBBLE,DRIBBBLE_BOX,DRONE,DROPBOX,DRUPAL,DUCK,DUMBBELL,EARTH,EARTH_OFF,EDGE,EJECT,ELEVATION_DECLINE,ELEVATION_RISE,ELEVATOR,EMAIL,EMAIL_OPEN,EMAIL_OUTLINE,EMAIL_SECURE,EMOTICON,EMOTICON_COOL,EMOTICON_DEVIL,EMOTICON_HAPPY,EMOTICON_NEUTRAL,EMOTICON_POOP,EMOTICON_SAD,EMOTICON_TONGUE,ENGINE,ENGINE_OUTLINE,EQUAL,EQUAL_BOX,ERASER,ESCALATOR,ETHERNET,ETHERNET_CABLE,ETHERNET_CABLE_OFF,ETSY,EVERNOTE,EXCLAMATION,EXIT_TO_APP,EXPORT,EYE,EYE_OFF,EYEDROPPER,EYEDROPPER_VARIANT,FACEBOOK,FACEBOOK_BOX,FACEBOOK_MESSENGER,FACTORY,FAN,FAST_FORWARD,FAX,FERRY,FILE,FILE_CHART,FILE_CHECK,FILE_CLOUD,FILE_DELIMITED,FILE_DOCUMENT,FILE_DOCUMENT_BOX,FILE_EXCEL,FILE_EXCEL_BOX,FILE_EXPORT,FILE_FIND,FILE_IMAGE,FILE_IMPORT,FILE_LOCK,FILE_MULTIPLE,FILE_MUSIC,FILE_OUTLINE,FILE_PDF,FILE_PDF_BOX,FILE_POWERPOINT,FILE_POWERPOINT_BOX,FILE_PRESENTATION_BOX,FILE_SEND,FILE_VIDEO,FILE_WORD,FILE_WORD_BOX,FILE_XML,FILM,FILMSTRIP,FILMSTRIP_OFF,FILTER,FILTER_OUTLINE,FILTER_REMOVE,FILTER_REMOVE_OUTLINE,FILTER_VARIANT,FINGERPRINT,FIRE,FIREFOX,FISH,FLAG,FLAG_CHECKERED,FLAG_OUTLINE,FLAG_VARIANT_OUTLINE,FLAG_TRIANGLE,FLAG_VARIANT,FLASH,FLASH_AUTO,FLASH_OFF,FLASHLIGHT,FLASHLIGHT_OFF,FLATTR,FLIP_TO_BACK,FLIP_TO_FRONT,FLOPPY,FLOWER,FOLDER,FOLDER_ACCOUNT,FOLDER_DOWNLOAD,FOLDER_GOOGLE_DRIVE,FOLDER_IMAGE,FOLDER_LOCK,FOLDER_LOCK_OPEN,FOLDER_MOVE,FOLDER_MULTIPLE,FOLDER_MULTIPLE_IMAGE,FOLDER_MULTIPLE_OUTLINE,FOLDER_OUTLINE,FOLDER_PLUS,FOLDER_REMOVE,FOLDER_UPLOAD,FOOD,FOOD_APPLE,FOOD_VARIANT,FOOTBALL,FOOTBALL_AUSTRALIAN,FOOTBALL_HELMET,FORMAT_ALIGN_CENTER,FORMAT_ALIGN_JUSTIFY,FORMAT_ALIGN_LEFT,FORMAT_ALIGN_RIGHT,FORMAT_BOLD,FORMAT_CLEAR,FORMAT_COLOR_FILL,FORMAT_FLOAT_CENTER,FORMAT_FLOAT_LEFT,FORMAT_FLOAT_NONE,FORMAT_FLOAT_RIGHT,FORMAT_HEADER_1,FORMAT_HEADER_2,FORMAT_HEADER_3,FORMAT_HEADER_4,FORMAT_HEADER_5,FORMAT_HEADER_6,FORMAT_HEADER_DECREASE,FORMAT_HEADER_EQUAL,FORMAT_HEADER_INCREASE,FORMAT_HEADER_POUND,FORMAT_INDENT_DECREASE,FORMAT_INDENT_INCREASE,FORMAT_ITALIC,FORMAT_LINE_SPACING,FORMAT_LIST_BULLETED,FORMAT_LIST_BULLETED_TYPE,FORMAT_LIST_NUMBERS,FORMAT_PAINT,FORMAT_PARAGRAPH,FORMAT_QUOTE_CLOSE,FORMAT_SIZE,FORMAT_STRIKETHROUGH,FORMAT_STRIKETHROUGH_VARIANT,FORMAT_SUBSCRIPT,FORMAT_SUPERSCRIPT,FORMAT_TEXT,FORMAT_TEXTDIRECTION_L_TO_R,FORMAT_TEXTDIRECTION_R_TO_L,FORMAT_UNDERLINE,FORMAT_WRAP_INLINE,FORMAT_WRAP_SQUARE,FORMAT_WRAP_TIGHT,FORMAT_WRAP_TOP_BOTTOM,FORUM,FORWARD,FOURSQUARE,FRIDGE,FRIDGE_FILLED,FRIDGE_FILLED_BOTTOM,FRIDGE_FILLED_TOP,FULLSCREEN,FULLSCREEN_EXIT,FUNCTION,GAMEPAD,GAMEPAD_VARIANT,GAS_STATION,GATE,GAUGE,GAVEL,GENDER_FEMALE,GENDER_MALE,GENDER_MALE_FEMALE,GENDER_TRANSGENDER,GHOST,GIFT,GIT,GITHUB_BOX,GITHUB_CIRCLE,GLASS_FLUTE,GLASS_MUG,GLASS_STANGE,GLASS_TULIP,GLASSDOOR,GLASSES,GMAIL,GNOME,GOOGLE,GOOGLE_CARDBOARD,GOOGLE_CHROME,GOOGLE_CIRCLES,GOOGLE_CIRCLES_COMMUNITIES,GOOGLE_CIRCLES_EXTENDED,GOOGLE_CIRCLES_GROUP,GOOGLE_CONTROLLER,GOOGLE_CONTROLLER_OFF,GOOGLE_DRIVE,GOOGLE_EARTH,GOOGLE_GLASS,GOOGLE_NEARBY,GOOGLE_PAGES,GOOGLE_PHYSICAL_WEB,GOOGLE_PLAY,GOOGLE_PLUS,GOOGLE_PLUS_BOX,GOOGLE_TRANSLATE,GOOGLE_WALLET,GRID,GRID_OFF,GROUP,GUITAR_ELECTRIC,GUITAR_PICK,GUITAR_PICK_OUTLINE,HAND_POINTING_RIGHT,HANGER,GOOGLE_HANGOUTS,HARDDISK,HEADPHONES,HEADPHONES_BOX,HEADPHONES_SETTINGS,HEADSET,HEADSET_DOCK,HEADSET_OFF,HEART,HEART_BOX,HEART_BOX_OUTLINE,HEART_BROKEN,HEART_OUTLINE,HELP,HELP_CIRCLE,HEXAGON,HEXAGON_OUTLINE,HISTORY,HOLOLENS,HOME,HOME_MODERN,HOME_VARIANT,HOPS,HOSPITAL,HOSPITAL_BUILDING,HOSPITAL_MARKER,HOTEL,HOUZZ,HOUZZ_BOX,HUMAN,HUMAN_CHILD,HUMAN_MALE_FEMALE,IMAGE,IMAGE_ALBUM,IMAGE_AREA,IMAGE_AREA_CLOSE,IMAGE_BROKEN,IMAGE_BROKEN_VARIANT,IMAGE_FILTER,IMAGE_FILTER_BLACK_WHITE,IMAGE_FILTER_CENTER_FOCUS,IMAGE_FILTER_CENTER_FOCUS_WEAK,IMAGE_FILTER_DRAMA,IMAGE_FILTER_FRAMES,IMAGE_FILTER_HDR,IMAGE_FILTER_NONE,IMAGE_FILTER_TILT_SHIFT,IMAGE_FILTER_VINTAGE,IMAGE_MULTIPLE,IMPORT_ICON,INBOX_ARROW_DOWN,INFORMATION,INFORMATION_OUTLINE,INSTAGRAM,INSTAPAPER,INTERNET_EXPLORER,INVERT_COLORS,JEEPNEY,JIRA,JSFIDDLE,KEG,KEY,KEY_CHANGE,KEY_MINUS,KEY_PLUS,KEY_REMOVE,KEY_VARIANT,KEYBOARD,KEYBOARD_BACKSPACE,KEYBOARD_CAPS,KEYBOARD_CLOSE,KEYBOARD_OFF,KEYBOARD_RETURN,KEYBOARD_TAB,KEYBOARD_VARIANT,KODI,LABEL,LABEL_OUTLINE,LAN,LAN_CONNECT,LAN_DISCONNECT,LAN_PENDING,LANGUAGE_CSHARP,LANGUAGE_CSS3,LANGUAGE_HTML5,LANGUAGE_JAVASCRIPT,LANGUAGE_PHP,LANGUAGE_PYTHON,LANGUAGE_PYTHON_TEXT,LAPTOP,LAPTOP_CHROMEBOOK,LAPTOP_MAC,LAPTOP_WINDOWS,LASTFM,LAUNCH,LAYERS,LAYERS_OFF,LEAF,LED_OFF,LED_ON,LED_OUTLINE,LED_VARIANT_OFF,LED_VARIANT_ON,LED_VARIANT_OUTLINE,LIBRARY,LIBRARY_BOOKS,LIBRARY_MUSIC,LIBRARY_PLUS,LIGHTBULB,LIGHTBULB_OUTLINE,LINK,LINK_OFF,LINK_VARIANT,LINK_VARIANT_OFF,LINKEDIN,LINKEDIN_BOX,LINUX,LOCK,LOCK_OPEN,LOCK_OPEN_OUTLINE,LOCK_OUTLINE,LOGIN,LOGOUT,LOOKS,LOUPE,LUMX,MAGNET,MAGNET_ON,MAGNIFY,MAGNIFY_MINUS,MAGNIFY_PLUS,MAIL_RU,MAP,MAP_MARKER,MAP_MARKER_CIRCLE,MAP_MARKER_MULTIPLE,MAP_MARKER_OFF,MAP_MARKER_RADIUS,MARGIN,MARKDOWN,MARKER_CHECK,GLASS_COCKTAIL,MATERIAL_UI,MATH_COMPASS,MAXCDN,MEDIUM,MEMORY,MENU,MENU_DOWN,MENU_LEFT,MENU_RIGHT,MENU_UP,MESSAGE,MESSAGE_ALERT,MESSAGE_DRAW,MESSAGE_IMAGE,MESSAGE_OUTLINE,MESSAGE_PROCESSING,MESSAGE_REPLY,MESSAGE_REPLY_TEXT,MESSAGE_TEXT,MESSAGE_TEXT_OUTLINE,MESSAGE_VIDEO,MICROPHONE,MICROPHONE_OFF,MICROPHONE_OUTLINE,MICROPHONE_SETTINGS,MICROPHONE_VARIANT,MICROPHONE_VARIANT_OFF,MICROSOFT,MINECRAFT,MINUS,MINUS_BOX,MINUS_CIRCLE,MINUS_CIRCLE_OUTLINE,MINUS_NETWORK,MONITOR,MONITOR_MULTIPLE,MORE,MOTORBIKE,MOUSE,MOUSE_OFF,MOUSE_VARIANT,MOUSE_VARIANT_OFF,MOVIE,MULTIPLICATION,MULTIPLICATION_BOX,MUSIC_BOX,MUSIC_BOX_OUTLINE,MUSIC_CIRCLE,MUSIC_NOTE,MUSIC_NOTE_EIGHTH,MUSIC_NOTE_HALF,MUSIC_NOTE_OFF,MUSIC_NOTE_QUARTER,MUSIC_NOTE_SIXTEENTH,MUSIC_NOTE_WHOLE,NATURE,NATURE_PEOPLE,NAVIGATION,NEEDLE,SMOKE_DETECTOR,THERMOSTAT,NEW_BOX,NEWSPAPER,NFC,NFC_TAP,NFC_VARIANT,NODEJS,NOTE,NOTE_OUTLINE,NOTE_PLUS,NOTE_PLUS_OUTLINE,NOTE_TEXT,NOTIFICATION_CLEAR_ALL,NUMERIC,NUMERIC_0_BOX,NUMERIC_0_BOX_MULTIPLE_OUTLINE,NUMERIC_0_BOX_OUTLINE,NUMERIC_1_BOX,NUMERIC_1_BOX_MULTIPLE_OUTLINE,NUMERIC_1_BOX_OUTLINE,NUMERIC_2_BOX,NUMERIC_2_BOX_MULTIPLE_OUTLINE,NUMERIC_2_BOX_OUTLINE,NUMERIC_3_BOX,NUMERIC_3_BOX_MULTIPLE_OUTLINE,NUMERIC_3_BOX_OUTLINE,NUMERIC_4_BOX,NUMERIC_4_BOX_MULTIPLE_OUTLINE,NUMERIC_4_BOX_OUTLINE,NUMERIC_5_BOX,NUMERIC_5_BOX_MULTIPLE_OUTLINE,NUMERIC_5_BOX_OUTLINE,NUMERIC_6_BOX,NUMERIC_6_BOX_MULTIPLE_OUTLINE,NUMERIC_6_BOX_OUTLINE,NUMERIC_7_BOX,NUMERIC_7_BOX_MULTIPLE_OUTLINE,NUMERIC_7_BOX_OUTLINE,NUMERIC_8_BOX,NUMERIC_8_BOX_MULTIPLE_OUTLINE,NUMERIC_8_BOX_OUTLINE,NUMERIC_9_BOX,NUMERIC_9_BOX_MULTIPLE_OUTLINE,NUMERIC_9_BOX_OUTLINE,NUMERIC_9_PLUS_BOX,NUMERIC_9_PLUS_BOX_MULTIPLE_OUTLINE,NUMERIC_9_PLUS_BOX_OUTLINE,NUTRITION,OCTAGON,OCTAGON_OUTLINE,ODNOKLASSNIKI,OFFICE,OIL,OIL_TEMPERATURE,OMEGA,ONEDRIVE,OPEN_IN_APP,OPEN_IN_NEW,OPENID,OPERA,ORNAMENT,ORNAMENT_VARIANT,INBOX_ARROW_UP,OWL,PACKAGE_ICON,PACKAGE_DOWN,PACKAGE_UP,PACKAGE_VARIANT,PACKAGE_VARIANT_CLOSED,PALETTE,PALETTE_ADVANCED,PANDA,PANDORA,PANORAMA,PANORAMA_FISHEYE,PANORAMA_HORIZONTAL,PANORAMA_VERTICAL,PANORAMA_WIDE_ANGLE,PAPER_CUT_VERTICAL,PAPERCLIP,PARKING,PAUSE,PAUSE_CIRCLE,PAUSE_CIRCLE_OUTLINE,PAUSE_OCTAGON,PAUSE_OCTAGON_OUTLINE,PAW,PEN,PENCIL,PENCIL_BOX,PENCIL_BOX_OUTLINE,PENCIL_LOCK,PENCIL_OFF,PERCENT,PHARMACY,PHONE,PHONE_BLUETOOTH,PHONE_FORWARD,PHONE_HANGUP,PHONE_IN_TALK,PHONE_INCOMING,PHONE_LOCKED,PHONE_LOG,PHONE_MISSED,PHONE_OUTGOING,PHONE_PAUSED,PHONE_SETTINGS,PHONE_VOIP,PI,PI_BOX,PIG,PILL,PIN,PIN_OFF,PINE_TREE,PINE_TREE_BOX,PINTEREST,PINTEREST_BOX,PIZZA,PLAY,PLAY_BOX_OUTLINE,PLAY_CIRCLE,PLAY_CIRCLE_OUTLINE,PLAY_PAUSE,PLAY_PROTECTED_CONTENT,PLAYLIST_MINUS,PLAYLIST_PLAY,PLAYLIST_PLUS,PLAYLIST_REMOVE,PLAYSTATION,PLUS,PLUS_BOX,PLUS_CIRCLE,PLUS_CIRCLE_MULTIPLE_OUTLINE,PLUS_CIRCLE_OUTLINE,PLUS_NETWORK,PLUS_ONE,POCKET,POKEBALL,POLAROID,POLL,POLL_BOX,POLYMER,POPCORN,POUND,POUND_BOX,POWER,POWER_SETTINGS,POWER_SOCKET,PRESENTATION,PRESENTATION_PLAY,PRINTER,PRINTER_3D,PRINTER_ALERT,PROFESSIONAL_HEXAGON,PROJECTOR,PROJECTOR_SCREEN,PULSE,PUZZLE,QRCODE,QRCODE_SCAN,QUADCOPTER,QUALITY_HIGH,QUICKTIME,RADAR,RADIATOR,RADIO,RADIO_HANDHELD,RADIO_TOWER,RADIOACTIVE,RADIOBOX_BLANK,RADIOBOX_MARKED,RASPBERRYPI,RAY_END,RAY_END_ARROW,RAY_START,RAY_START_ARROW,RAY_START_END,RAY_VERTEX,LASTPASS,READ,YOUTUBE_TV,RECEIPT,RECORD,RECORD_REC,RECYCLE,REDDIT,REDO,REDO_VARIANT,REFRESH,REGEX,RELATIVE_SCALE,RELOAD,REMOTE,RENAME_BOX,REPEAT,REPEAT_OFF,REPEAT_ONCE,REPLAY,REPLY,REPLY_ALL,REPRODUCTION,RESIZE_BOTTOM_RIGHT,RESPONSIVE,REWIND,RIBBON,ROAD,ROAD_VARIANT,ROCKET,ROTATE_3D,ROTATE_LEFT,ROTATE_LEFT_VARIANT,ROTATE_RIGHT,ROTATE_RIGHT_VARIANT,ROUTER_WIRELESS,ROUTES,RSS,RSS_BOX,RULER,RUN_FAST,SALE,SATELLITE,SATELLITE_VARIANT,SCALE,SCALE_BATHROOM,SCHOOL,SCREEN_ROTATION,SCREEN_ROTATION_LOCK,SCREWDRIVER,SCRIPT,SD,SEAL,SEAT_FLAT,SEAT_FLAT_ANGLED,SEAT_INDIVIDUAL_SUITE,SEAT_LEGROOM_EXTRA,SEAT_LEGROOM_NORMAL,SEAT_LEGROOM_REDUCED,SEAT_RECLINE_EXTRA,SEAT_RECLINE_NORMAL,SECURITY,SECURITY_NETWORK,SELECT,SELECT_ALL,SELECT_INVERSE,SELECT_OFF,SELECTION,SEND,SERVER,SERVER_MINUS,SERVER_NETWORK,SERVER_NETWORK_OFF,SERVER_OFF,SERVER_PLUS,SERVER_REMOVE,SERVER_SECURITY,SETTINGS,SETTINGS_BOX,SHAPE_PLUS,SHARE,SHARE_VARIANT,SHIELD,SHIELD_OUTLINE,SHOPPING,SHOPPING_MUSIC,SHREDDER,SHUFFLE,SHUFFLE_DISABLED,SHUFFLE_VARIANT,SIGMA,SIGN_CAUTION,SIGNAL,SILVERWARE,SILVERWARE_FORK,SILVERWARE_SPOON,SILVERWARE_VARIANT,SIM,SIM_ALERT,SIM_OFF,SITEMAP,SKIP_BACKWARD,SKIP_FORWARD,SKIP_NEXT,SKIP_PREVIOUS,SKYPE,SKYPE_BUSINESS,SLACK,SLEEP,SLEEP_OFF,SMOKING,SMOKING_OFF,SNAPCHAT,SNOWMAN,SOCCER,SOFA,SORT,SORT_ALPHABETICAL,SORT_ASCENDING,SORT_DESCENDING,SORT_NUMERIC,SORT_VARIANT,SOUNDCLOUD,SOURCE_FORK,SOURCE_PULL,SPEAKER,SPEAKER_OFF,SPEEDOMETER,SPELLCHECK,SPOTIFY,SPOTLIGHT,SPOTLIGHT_BEAM,SQUARE_INC,SQUARE_INC_CASH,STACK_OVERFLOW,STAIRS,STAR,STAR_CIRCLE,STAR_HALF,STAR_OFF,STAR_OUTLINE,STEAM,STEERING,STEP_BACKWARD,STEP_BACKWARD_2,STEP_FORWARD,STEP_FORWARD_2,STETHOSCOPE,STOCKING,STOP,STORE,STORE_24_HOUR,STOVE,SUBWAY_VARIANT,SUNGLASSES,SWAP_HORIZONTAL,SWAP_VERTICAL,SWIM,SWITCH_ICON,SWORD,SYNC,SYNC_ALERT,SYNC_OFF,TAB,TAB_UNSELECTED,TABLE,TABLE_COLUMN_PLUS_AFTER,TABLE_COLUMN_PLUS_BEFORE,TABLE_COLUMN_REMOVE,TABLE_COLUMN_WIDTH,TABLE_EDIT,TABLE_LARGE,TABLE_ROW_HEIGHT,TABLE_ROW_PLUS_AFTER,TABLE_ROW_PLUS_BEFORE,TABLE_ROW_REMOVE,TABLET,TABLET_ANDROID,TABLET_IPAD,TAG,TAG_FACES,TAG_MULTIPLE,TAG_OUTLINE,TAG_TEXT_OUTLINE,TARGET,TAXI,TEAMVIEWER,TELEGRAM,TELEVISION,TELEVISION_GUIDE,TEMPERATURE_CELSIUS,TEMPERATURE_FAHRENHEIT,TEMPERATURE_KELVIN,TENNIS,TENT,TERRAIN,TEXT_TO_SPEECH,TEXT_TO_SPEECH_OFF,TEXTURE,THEATER,THEME_LIGHT_DARK,THERMOMETER,THERMOMETER_LINES,THUMB_DOWN,THUMB_DOWN_OUTLINE,THUMB_UP,THUMB_UP_OUTLINE,THUMBS_UP_DOWN,TICKET,TICKET_ACCOUNT,TICKET_CONFIRMATION,TIE,TIMELAPSE,TIMER,TIMER_10,TIMER_3,TIMER_OFF,TIMER_SAND,TIMETABLE,TOGGLE_SWITCH,TOGGLE_SWITCH_OFF,TOOLTIP,TOOLTIP_EDIT,TOOLTIP_IMAGE,TOOLTIP_OUTLINE,TOOLTIP_OUTLINE_PLUS,TOOLTIP_TEXT,TOOTH_OUTLINE,TOR,TRAFFIC_LIGHT,TRAIN,TRAM,TRANSCRIBE,TRANSCRIBE_CLOSE,TRANSFER,TREE,TRELLO,TRENDING_DOWN,TRENDING_NEUTRAL,TRENDING_UP,TRIANGLE,TRIANGLE_OUTLINE,TROPHY,TROPHY_AWARD,TROPHY_OUTLINE,TROPHY_VARIANT,TROPHY_VARIANT_OUTLINE,TRUCK,TRUCK_DELIVERY,TSHIRT_CREW,TSHIRT_V,TUMBLR,TUMBLR_REBLOG,TWITCH,TWITTER,TWITTER_BOX,TWITTER_CIRCLE,TWITTER_RETWEET,UBUNTU,UMBRACO,UMBRELLA,UMBRELLA_OUTLINE,UNDO,UNDO_VARIANT,UNFOLD_LESS_HORIZONTAL,UNFOLD_MORE_HORIZONTAL,UNGROUP,UNTAPPD,UPLOAD,USB,VECTOR_ARRANGE_ABOVE,VECTOR_ARRANGE_BELOW,VECTOR_CIRCLE,VECTOR_CIRCLE_VARIANT,VECTOR_COMBINE,VECTOR_CURVE,VECTOR_DIFFERENCE,VECTOR_DIFFERENCE_AB,VECTOR_DIFFERENCE_BA,VECTOR_INTERSECTION,VECTOR_LINE,VECTOR_POINT,VECTOR_POLYGON,VECTOR_POLYLINE,VECTOR_SELECTION,VECTOR_TRIANGLE,VECTOR_UNION,VERIFIED,VIBRATE,VIDEO,VIDEO_OFF,VIDEO_SWITCH,VIEW_AGENDA,VIEW_ARRAY,VIEW_CAROUSEL,VIEW_COLUMN,VIEW_DASHBOARD,VIEW_DAY,VIEW_GRID,VIEW_HEADLINE,VIEW_LIST,VIEW_MODULE,VIEW_QUILT,VIEW_STREAM,VIEW_WEEK,VIMEO,VENMO,VK,VK_BOX,VK_CIRCLE,VLC,VOICEMAIL,VOLUME_HIGH,VOLUME_LOW,VOLUME_MEDIUM,VOLUME_OFF,VPN,WALK,WALLET,WALLET_GIFTCARD,WALLET_MEMBERSHIP,WALLET_TRAVEL,WAN,WATCH,WATCH_EXPORT,WATCH_IMPORT,WATER,WATER_OFF,WATER_PERCENT,WATER_PUMP,WEATHER_CLOUDY,WEATHER_FOG,WEATHER_HAIL,WEATHER_LIGHTNING,WEATHER_NIGHT,WEATHER_PARTLYCLOUDY,WEATHER_POURING,WEATHER_RAINY,WEATHER_SNOWY,WEATHER_SUNNY,WEATHER_SUNSET,WEATHER_SUNSET_DOWN,WEATHER_SUNSET_UP,WEATHER_WINDY,WEATHER_WINDY_VARIANT,WEB,WEBCAM,WEIGHT,WEIGHT_KILOGRAM,WHATSAPP,WHEELCHAIR_ACCESSIBILITY,WHITE_BALANCE_AUTO,WHITE_BALANCE_INCANDESCENT,WHITE_BALANCE_IRIDESCENT,WHITE_BALANCE_SUNNY,WIFI,WIFI_OFF,WII,WIKIPEDIA,WINDOW_CLOSE,WINDOW_CLOSED,WINDOW_MAXIMIZE,WINDOW_MINIMIZE,WINDOW_OPEN,WINDOW_RESTORE,WINDOWS,WORDPRESS,WORKER,WRAP,WRENCH,WUNDERLIST,XBOX,XBOX_CONTROLLER,XBOX_CONTROLLER_OFF,XDA,XING,XING_BOX,XING_CIRCLE,XML,YEAST,YELP,YOUTUBE,ZIP_BOX,SURROUND_SOUND,VECTOR_RECTANGLE,PLAYLIST_CHECK,FORMAT_LINE_STYLE,FORMAT_LINE_WEIGHT,TRANSLATE,VOICE,OPACITY,NEAR_ME,CLOCK_ALERT,HUMAN_PREGNANT,STICKER,SCALE_BALANCE,ACCOUNT_CARD_DETAILS,ACCOUNT_MULTIPLE_MINUS,AIRPLANE_LANDING,AIRPLANE_TAKEOFF,ALERT_CIRCLE_OUTLINE,ALTIMETER,ANIMATION,BOOK_MINUS,BOOK_OPEN_PAGE_VARIANT,BOOK_PLUS,BOOMBOX,BULLSEYE,COMMENT_REMOVE,CAMERA_OFF,CHECK_CIRCLE,CHECK_CIRCLE_OUTLINE,CANDLE,CHART_BUBBLE,CREDIT_CARD_OFF,CUP_OFF,COPYRIGHT,CURSOR_TEXT,DELETE_FOREVER,DELETE_SWEEP,DICE_D20,DICE_D4,DICE_D6,DICE_D8,DISK,EMAIL_OPEN_OUTLINE,EMAIL_VARIANT,EV_STATION,FOOD_FORK_DRINK,FOOD_OFF,FORMAT_TITLE,GOOGLE_MAPS,HEART_PULSE,HIGHWAY,HOME_MAP_MARKER,INCOGNITO,KETTLE,LOCK_PLUS,LOGIN_VARIANT,LOGOUT_VARIANT,MUSIC_NOTE_BLUETOOTH,MUSIC_NOTE_BLUETOOTH_OFF,PAGE_FIRST,PAGE_LAST,PHONE_CLASSIC,PRIORITY_HIGH,PRIORITY_LOW,QQCHAT,POOL,ROUNDED_CORNER,ROWING,SAXOPHONE,SIGNAL_VARIANT,STACK_EXCHANGE,SUBDIRECTORY_ARROW_LEFT,SUBDIRECTORY_ARROW_RIGHT,TEXTBOX,VIOLIN,VISUALSTUDIO,WECHAT,WATERMARK,FILE_HIDDEN,APPLICATION,ARROW_COLLAPSE,ARROW_EXPAND,BOWL,BRIDGE,BUFFER,CHIP,CONTENT_SAVE_SETTINGS,DIALPAD,DICTIONARY,FORMAT_HORIZONTAL_ALIGN_CENTER,FORMAT_HORIZONTAL_ALIGN_LEFT,FORMAT_HORIZONTAL_ALIGN_RIGHT,FORMAT_VERTICAL_ALIGN_BOTTOM,FORMAT_VERTICAL_ALIGN_CENTER,FORMAT_VERTICAL_ALIGN_TOP,HACKERNEWS,HELP_CIRCLE_OUTLINE,JSON,LAMBDA,MATRIX,METEOR,MIXCLOUD,SIGMA_LOWER,SOURCE_BRANCH,SOURCE_MERGE,TUNE,WEBHOOK,ACCOUNT_SETTINGS,ACCOUNT_SETTINGS_VARIANT,APPLE_KEYBOARD_CAPS,APPLE_KEYBOARD_COMMAND,APPLE_KEYBOARD_CONTROL,APPLE_KEYBOARD_OPTION,APPLE_KEYBOARD_SHIFT,BOX_SHADOW,CARDS,CARDS_OUTLINE,CARDS_PLAYING_OUTLINE,CHECKBOX_MULTIPLE_BLANK_CIRCLE,CHECKBOX_MULTIPLE_BLANK_CIRCLE_OUTLINE,CHECKBOX_MULTIPLE_MARKED_CIRCLE,CHECKBOX_MULTIPLE_MARKED_CIRCLE_OUTLINE,CLOUD_SYNC,COLLAGE,DIRECTIONS_FORK,ERASER_VARIANT,FACE,FACE_PROFILE,FILE_TREE,FORMAT_ANNOTATION_PLUS,GAS_CYLINDER,GREASE_PENCIL,HUMAN_FEMALE,HUMAN_GREETING,HUMAN_HANDSDOWN,HUMAN_HANDSUP,HUMAN_MALE,INFORMATION_VARIANT,LEAD_PENCIL,MAP_MARKER_MINUS,MAP_MARKER_PLUS,MARKER,MESSAGE_PLUS,MICROSCOPE,MOVE_RESIZE,MOVE_RESIZE_VARIANT,PAW_OFF,PHONE_MINUS,PHONE_PLUS,POT,POT_MIX,SERIAL_PORT,SHAPE_CIRCLE_PLUS,SHAPE_POLYGON_PLUS,SHAPE_RECTANGLE_PLUS,SHAPE_SQUARE_PLUS,SKIP_NEXT_CIRCLE,SKIP_NEXT_CIRCLE_OUTLINE,SKIP_PREVIOUS_CIRCLE,SKIP_PREVIOUS_CIRCLE_OUTLINE,SPRAY,STOP_CIRCLE,STOP_CIRCLE_OUTLINE,TEST_TUBE,TEXT_SHADOW,TUNE_VERTICAL,CART_OFF,CHART_GANTT,CHART_SCATTERPLOT_HEXBIN,CHART_TIMELINE,DISCORD,FILE_RESTORE,LANGUAGE_C,LANGUAGE_CPP,XAML,BANDCAMP,CREDIT_CARD_PLUS,ITUNES,BOW_TIE,CALENDAR_RANGE,CURRENCY_USD_OFF,FLASH_RED_EYE,OAR,PIANO,WEATHER_LIGHTNING_RAINY,WEATHER_SNOWY_RAINY,YIN_YANG,TOWER_BEACH,TOWER_FIRE,DELETE_CIRCLE,DNA,HAMBURGER,GONDOLA,INBOX,REORDER_HORIZONTAL,REORDER_VERTICAL,SECURITY_HOME,TAG_HEART,SKULL,SOLID,ALARM_SNOOZE,BABY_BUGGY,BEAKER,BOMB,CALENDAR_QUESTION,CAMERA_BURST,CODE_TAGS_CHECK,COINS,CROP_ROTATE,DEVELOPER_BOARD,DO_NOT_DISTURB,DO_NOT_DISTURB_OFF,DOUBAN,EMOTICON_DEAD,EMOTICON_EXCITED,FOLDER_STAR,FORMAT_COLOR_TEXT,FORMAT_SECTION,GRADIENT,HOME_OUTLINE,MESSAGE_BULLETED,MESSAGE_BULLETED_OFF,NUKE,POWER_PLUG,POWER_PLUG_OFF,PUBLISH,RESTORE,ROBOT,FORMAT_ROTATE_90,SCANNER,SUBWAY,TIMER_SAND_EMPTY,TRANSIT_TRANSFER,UNITY,UPDATE,WATCH_VIBRATE,ANGULAR,DOLBY,EMBY,LAMP,MENU_DOWN_OUTLINE,MENU_UP_OUTLINE,NOTE_MULTIPLE,NOTE_MULTIPLE_OUTLINE,PLEX,PLANE_SHIELD,ACCOUNT_EDIT,ALERT_DECAGRAM,ALL_INCLUSIVE,ANGULARJS,ARROW_DOWN_BOX,ARROW_LEFT_BOX,ARROW_RIGHT_BOX,ARROW_UP_BOX,ASTERISK,BOMB_OFF,BOOTSTRAP,CARDS_VARIANT,CLIPBOARD_FLOW,CLOSE_OUTLINE,COFFEE_OUTLINE,CONTACTS,DELETE_EMPTY,EARTH_BOX,EARTH_BOX_OFF,EMAIL_ALERT,EYE_OUTLINE,EYE_OFF_OUTLINE,FAST_FORWARD_OUTLINE,FEATHER,FIND_REPLACE,FLASH_OUTLINE,FORMAT_FONT,FORMAT_PAGE_BREAK,FORMAT_PILCROW,GARAGE,GARAGE_OPEN,GITHUB_FACE,GOOGLE_KEEP,GOOGLE_PHOTOS,HEART_HALF_FULL,HEART_HALF,HEART_HALF_OUTLINE,HEXAGON_MULTIPLE,HOOK,HOOK_OFF,INFINITY,LANGUAGE_SWIFT,LANGUAGE_TYPESCRIPT,LAPTOP_OFF,LIGHTBULB_ON,LIGHTBULB_ON_OUTLINE,LOCK_PATTERN,LOOP,MAGNIFY_MINUS_OUTLINE,MAGNIFY_PLUS_OUTLINE,MAILBOX,MEDICAL_BAG,MESSAGE_SETTINGS,MESSAGE_SETTINGS_VARIANT,MINUS_BOX_OUTLINE,NETWORK,DOWNLOAD_NETWORK,HELP_NETWORK,UPLOAD_NETWORK,NPM,NUT,OCTAGRAM,PAGE_LAYOUT_BODY,PAGE_LAYOUT_FOOTER,PAGE_LAYOUT_HEADER,PAGE_LAYOUT_SIDEBAR_LEFT,PAGE_LAYOUT_SIDEBAR_RIGHT,PENCIL_CIRCLE,PENTAGON,PENTAGON_OUTLINE,PILLAR,PISTOL,PLUS_BOX_OUTLINE,PLUS_OUTLINE,PRESCRIPTION,PRINTER_SETTINGS,REACT,RESTART,REWIND_OUTLINE,RHOMBUS,RHOMBUS_OUTLINE,ROBOT_VACUUM,RUN,SEARCH_WEB,SHOVEL,SHOVEL_OFF,SIGNAL_2G,SIGNAL_3G,SIGNAL_4G,SIGNAL_HSPA,SIGNAL_HSPA_PLUS,SNOWFLAKE,SOURCE_COMMIT,SOURCE_COMMIT_END,SOURCE_COMMIT_END_LOCAL,SOURCE_COMMIT_LOCAL,SOURCE_COMMIT_NEXT_LOCAL,SOURCE_COMMIT_START,SOURCE_COMMIT_START_NEXT_LOCAL,SPEAKER_WIRELESS,STADIUM,SVG,TAG_PLUS,TAG_REMOVE,TICKET_PERCENT,TILDE,TREASURE_CHEST,TRUCK_TRAILER,VIEW_PARALLEL,VIEW_SEQUENTIAL,WASHING_MACHINE,WEBPACK,WIDGETS,WIIU,ARROW_DOWN_BOLD,ARROW_DOWN_BOLD_BOX,ARROW_DOWN_BOLD_BOX_OUTLINE,ARROW_LEFT_BOLD,ARROW_LEFT_BOLD_BOX,ARROW_LEFT_BOLD_BOX_OUTLINE,ARROW_RIGHT_BOLD,ARROW_RIGHT_BOLD_BOX,ARROW_RIGHT_BOLD_BOX_OUTLINE,ARROW_UP_BOLD,ARROW_UP_BOLD_BOX,ARROW_UP_BOLD_BOX_OUTLINE,CANCEL,FILE_ACCOUNT,GESTURE_DOUBLE_TAP,GESTURE_SWIPE_DOWN,GESTURE_SWIPE_LEFT,GESTURE_SWIPE_RIGHT,GESTURE_SWIPE_UP,GESTURE_TAP,GESTURE_TWO_DOUBLE_TAP,GESTURE_TWO_TAP,HUMBLE_BUNDLE,KICKSTARTER,NETFLIX,ONENOTE,PERISCOPE,UBER,VECTOR_RADIUS,XBOX_CONTROLLER_BATTERY_ALERT,XBOX_CONTROLLER_BATTERY_EMPTY,XBOX_CONTROLLER_BATTERY_FULL,XBOX_CONTROLLER_BATTERY_LOW,XBOX_CONTROLLER_BATTERY_MEDIUM,XBOX_CONTROLLER_BATTERY_UNKNOWN,CLIPBOARD_PLUS,FILE_PLUS,FORMAT_ALIGN_BOTTOM,FORMAT_ALIGN_MIDDLE,FORMAT_ALIGN_TOP,FORMAT_LIST_CHECKS,FORMAT_QUOTE_OPEN,GRID_LARGE,HEART_OFF,MUSIC,MUSIC_OFF,TAB_PLUS,VOLUME_PLUS,VOLUME_MINUS,VOLUME_MUTE,UNFOLD_LESS_VERTICAL,UNFOLD_MORE_VERTICAL,TACO,SQUARE_OUTLINE,SQUARE,CIRCLE,CIRCLE_OUTLINE,ALERT_OCTAGRAM,ATOM,CEILING_LIGHT,CHART_BAR_STACKED,CHART_LINE_STACKED,DECAGRAM,DECAGRAM_OUTLINE,DICE_MULTIPLE,DICE_D10,FOLDER_OPEN,GUITAR_ACOUSTIC,LOADING,LOCK_RESET,NINJA,OCTAGRAM_OUTLINE,PENCIL_CIRCLE_OUTLINE,SELECTION_OFF,SET_ALL,SET_CENTER,SET_CENTER_RIGHT,SET_LEFT,SET_LEFT_CENTER,SET_LEFT_RIGHT,SET_NONE,SET_RIGHT,SHIELD_HALF_FULL,SIGN_DIRECTION,SIGN_TEXT,SIGNAL_OFF,SQUARE_ROOT,STICKER_EMOJI,SUMMIT,SWORD_CROSS,TRUCK_FAST,YAMMER,CAST_OFF,HELP_BOX,TIMER_SAND_FULL,WAVES,ALARM_BELL,ALARM_LIGHT,ANDROID_HEAD,APPROVAL,ARROW_COLLAPSE_DOWN,ARROW_COLLAPSE_LEFT,ARROW_COLLAPSE_RIGHT,ARROW_COLLAPSE_UP,ARROW_EXPAND_DOWN,ARROW_EXPAND_LEFT,ARROW_EXPAND_RIGHT,ARROW_EXPAND_UP,BOOK_SECURE,BOOK_UNSECURE,BUS_ARTICULATED_END,BUS_ARTICULATED_FRONT,BUS_DOUBLE_DECKER,BUS_SCHOOL,BUS_SIDE,CAMERA_GOPRO,CAMERA_METERING_CENTER,CAMERA_METERING_MATRIX,CAMERA_METERING_PARTIAL,CAMERA_METERING_SPOT,CANNABIS,CAR_CONVERTIBLE,CAR_ESTATE,CAR_HATCHBACK,CAR_PICKUP,CAR_SIDE,CAR_SPORTS,CARAVAN,CCTV,CHART_DONUT,CHART_DONUT_VARIANT,CHART_LINE_VARIANT,CHILI_HOT,CHILI_MEDIUM,CHILI_MILD,CLOUD_BRACES,CLOUD_TAGS,CONSOLE_LINE,CORN,CURRENCY_CHF,CURRENCY_CNY,CURRENCY_ETH,CURRENCY_JPY,CURRENCY_KRW,CURRENCY_SIGN,CURRENCY_TWD,DESKTOP_CLASSIC,DIP_SWITCH,DONKEY,DOTS_HORIZONTAL_CIRCLE,DOTS_VERTICAL_CIRCLE,EAR_HEARING,ELEPHANT,EVENTBRITE,FOOD_CROISSANT,FORKLIFT,FUEL,GESTURE,GOOGLE_ANALYTICS,GOOGLE_ASSISTANT,HEADPHONES_OFF,HIGH_DEFINITION,HOME_ASSISTANT,HOME_AUTOMATION,HOME_CIRCLE,LANGUAGE_GO,LANGUAGE_R,LAVA_LAMP,LED_STRIP,LOCKER,LOCKER_MULTIPLE,MAP_MARKER_OUTLINE,METRONOME,METRONOME_TICK,MICRO_SD,MIXER,MOVIE_ROLL,MUSHROOM,MUSHROOM_OUTLINE,NINTENDO_SWITCH,NULL_ICON,PASSPORT,PERIODIC_TABLE_CO2,PIPE,PIPE_DISCONNECTED,POWER_SOCKET_EU,POWER_SOCKET_UK,POWER_SOCKET_US,RICE,RING,SASS,SEND_SECURE,SOY_SAUCE,STANDARD_DEFINITION,SURROUND_SOUND_2_0,SURROUND_SOUND_3_1,SURROUND_SOUND_5_1,SURROUND_SOUND_7_1,TELEVISION_CLASSIC,TEXTBOX_PASSWORD,THOUGHT_BUBBLE,THOUGHT_BUBBLE_OUTLINE,TRACKPAD,ULTRA_HIGH_DEFINITION,VAN_PASSENGER,VAN_UTILITY,VANISH,VIDEO_3D,WALL,XMPP,ACCOUNT_MULTIPLE_PLUS_OUTLINE,ACCOUNT_PLUS_OUTLINE,GOOGLE_ALLO,ARTIST,ATLASSIAN,AZURE,BASKETBALL,BATTERY_CHARGING_WIRELESS,BATTERY_CHARGING_WIRELESS_10,BATTERY_CHARGING_WIRELESS_20,BATTERY_CHARGING_WIRELESS_30,BATTERY_CHARGING_WIRELESS_40,BATTERY_CHARGING_WIRELESS_50,BATTERY_CHARGING_WIRELESS_60,BATTERY_CHARGING_WIRELESS_70,BATTERY_CHARGING_WIRELESS_80,BATTERY_CHARGING_WIRELESS_90,BATTERY_CHARGING_WIRELESS_ALERT,BATTERY_CHARGING_WIRELESS_OUTLINE,BITCOIN,BRIEFCASE_OUTLINE,CELLPHONE_WIRELESS,CLOVER,COMMENT_QUESTION,CONTENT_SAVE_OUTLINE,DELETE_RESTORE,DOOR,DOOR_CLOSED,DOOR_OPEN,FAN_OFF,FILE_PERCENT,FINANCE,FLASH_CIRCLE,FLOOR_PLAN,FORUM_OUTLINE,GOLF,GOOGLE_HOME,GUY_FAWKES_MASK,HOME_ACCOUNT,HOME_HEART,HOT_TUB,HULU,ICE_CREAM,IMAGE_OFF,KARATE,LADYBUG,NOTEBOOK,PHONE_RETURN,POKER_CHIP,SHAPE,SHAPE_OUTLINE,SHIP_WHEEL,SOCCER_FIELD,TABLE_COLUMN,TABLE_OF_CONTENTS,TABLE_ROW,TABLE_SETTINGS,TELEVISION_BOX,TELEVISION_CLASSIC_OFF,TELEVISION_OFF,TOWING,UPLOAD_MULTIPLE,VIDEO_4K_BOX,VIDEO_INPUT_ANTENNA,VIDEO_INPUT_COMPONENT,VIDEO_INPUT_HDMI,VIDEO_INPUT_SVIDEO,VIEW_DASHBOARD_VARIANT,VUEJS,XAMARIN,XAMARIN_OUTLINE,YOUTUBE_CREATOR_STUDIO,YOUTUBE_GAMING,ACCOUNT_GROUP,ACCUSOFT,AIRPORT,ARROW_COLLAPSE_HORIZONTAL,ARROW_COLLAPSE_VERTICAL,ARROW_EXPAND_HORIZONTAL,ARROW_EXPAND_VERTICAL,AUGMENTED_REALITY,BADMINTON,BASEBALL,BASEBALL_BAT,BOTTLE_WINE,CHECK_OUTLINE,CHECKBOX_INTERMEDIATE,CHESS_KING,CHESS_KNIGHT,CHESS_PAWN,CHESS_QUEEN,CHESS_ROOK,CHESS_BISHOP,CLIPBOARD_PULSE,CLIPBOARD_PULSE_OUTLINE,COMMENT_MULTIPLE,COMMENT_TEXT_MULTIPLE,COMMENT_TEXT_MULTIPLE_OUTLINE,CRANE,CURLING,CURRENCY_BDT,CURRENCY_KZT,DATABASE_SEARCH,DICE_D12,DOCKER,DOORBELL_VIDEO,ETHEREUM,EYE_PLUS,EYE_PLUS_OUTLINE,EYE_SETTINGS,EYE_SETTINGS_OUTLINE,FILE_QUESTION,FOLDER_NETWORK,FUNCTION_VARIANT,GARAGE_ALERT,GAUGE_EMPTY,GAUGE_FULL,GAUGE_LOW,GLASS_WINE,GRAPHQL,HIGH_DEFINITION_BOX,HOCKEY_PUCK,HOCKEY_STICKS,HOME_ALERT,IMAGE_PLUS,JQUERY,LIFEBUOY,MIXED_REALITY,NATIVESCRIPT,ONEPASSWORD,PATREON,PAYPAL,PEACE,PHONE_ROTATE_LANDSCAPE,PHONE_ROTATE_PORTRAIT,PIER,PIER_CRANE,PIPE_LEAK,PISTON,PLAY_NETWORK,REMINDER,ROOM_SERVICE,SALESFORCE,SECURITY_ACCOUNT,TEACH,THERMOSTAT_BOX,TRACTOR,VECTOR_ELLIPSE,VIRTUAL_REALITY,WATCH_EXPORT_VARIANT,WATCH_IMPORT_VARIANT,WATCH_VARIANT,WEATHER_HURRICANE,ACCOUNT_HEART,ALIEN,ANVIL,BATTERY_CHARGING_10,BATTERY_CHARGING_50,BATTERY_CHARGING_70,BATTERY_CHARGING_OUTLINE,BED_EMPTY,BORDER_ALL_VARIANT,BORDER_BOTTOM_VARIANT,BORDER_LEFT_VARIANT,BORDER_NONE_VARIANT,BORDER_RIGHT_VARIANT,BORDER_TOP_VARIANT,CALENDAR_EDIT,CLIPBOARD_CHECK_OUTLINE,CONSOLE_NETWORK,FILE_COMPARE,FIRE_TRUCK,FOLDER_KEY,FOLDER_KEY_NETWORK,GPU,HOME_CURRENCY_USD,INBOX_MULTIPLE,LANGUAGE_LUA,LOCK_SMART,MICROPHONE_MINUS,MICROPHONE_PLUS,PALETTE_SWATCH,PERIODIC_TABLE,PICKAXE,QRCODE_EDIT,REMOTE_DESKTOP,SAUSAGE,SETTINGS_OUTLINE,SIGNAL_CELLULAR_1,SIGNAL_CELLULAR_2,SIGNAL_CELLULAR_3,SIGNAL_CELLULAR_OUTLINE,SSH,SWAP_HORIZONTAL_VARIANT,SWAP_VERTICAL_VARIANT,TOOTH,TRAIN_VARIANT,ACCOUNT_MULTIPLE_CHECK,AMAZON_ALEXA,ARCH,AXE,BULLSEYE_ARROW,BUS_CLOCK,CAMERA_ACCOUNT,CAMERA_IMAGE,CAR_LIMOUSINE,CARDS_CLUB,CARDS_DIAMOND,CARDS_HEART,CARDS_SPADE,CELLPHONE_TEXT,CELLPHONE_MESSAGE,CHART_MULTILINE,CIRCLE_EDIT_OUTLINE,COGS,CREDIT_CARD_SETTINGS,DEATH_STAR,DEATH_STAR_VARIANT,DEBIAN,FEDORA,FILE_UNDO,FLOOR_LAMP,FOLDER_EDIT,FORMAT_COLUMNS,FREEBSD,GATE_AND,GATE_NAND,GATE_NOR,GATE_NOT,GATE_OR,GATE_XNOR,GATE_XOR,GENTOO,GLOBE_MODEL,HAMMER,HOME_LOCK,HOME_LOCK_OPEN,LINUX_MINT,LOCK_ALERT,LOCK_QUESTION,MAP_MARKER_DISTANCE,MIDI,MIDI_PORT,NAS,NETWORK_STRENGTH_1,NETWORK_STRENGTH_1_ALERT,NETWORK_STRENGTH_2,NETWORK_STRENGTH_2_ALERT,NETWORK_STRENGTH_3,NETWORK_STRENGTH_3_ALERT,NETWORK_STRENGTH_4,NETWORK_STRENGTH_4_ALERT,NETWORK_STRENGTH_OFF,NETWORK_STRENGTH_OFF_OUTLINE,NETWORK_STRENGTH_OUTLINE,PLAY_SPEED,PLAYLIST_EDIT,POWER_CYCLE,POWER_OFF,POWER_ON,POWER_SLEEP,POWER_SOCKET_AU,POWER_STANDBY,RABBIT,ROBOT_VACUUM_VARIANT,SATELLITE_UPLINK,SCANNER_OFF,SLACKWARE,SQUARE_EDIT_OUTLINE,STEAM_BOX,STEERING_OFF,TABLE_SEARCH,TAG_MINUS,TEST_TUBE_EMPTY,TEST_TUBE_OFF,TICKET_OUTLINE,TRACK_LIGHT,TRANSITION,TRANSITION_MASKED,TUMBLE_DRYER,TUMBLR_BOX,VIDEO_ACCOUNT,VIDEO_IMAGE,VIDEO_STABILIZATION,WALL_SCONCE,WALL_SCONCE_FLAT,WALL_SCONCE_VARIANT,WIFI_STRENGTH_1,WIFI_STRENGTH_1_ALERT,WIFI_STRENGTH_1_LOCK,WIFI_STRENGTH_2,WIFI_STRENGTH_2_ALERT,WIFI_STRENGTH_2_LOCK,WIFI_STRENGTH_3,WIFI_STRENGTH_3_ALERT,WIFI_STRENGTH_3_LOCK,WIFI_STRENGTH_4,WIFI_STRENGTH_4_ALERT,WIFI_STRENGTH_4_LOCK,WIFI_STRENGTH_ALERT_OUTLINE,WIFI_STRENGTH_LOCK_OUTLINE,WIFI_STRENGTH_OFF,WIFI_STRENGTH_OFF_OUTLINE,WIFI_STRENGTH_OUTLINE,PIN_OFF_OUTLINE,PIN_OUTLINE,SHARE_OUTLINE,TRACKPAD_LOCK}; -------------------------------------------------------------------------------- /app/src/main/assets/enumjavahex.java: -------------------------------------------------------------------------------- 1 | {"61441","61442","61443","61444","61445","61446","61447","61448","61449","61450","61451","61452","61453","61454","61455","61456","61457","61458","61459","61460","61461","61462","61463","61464","61465","61466","61467","61468","61469","61470","61471","61472","61473","61474","61475","61476","61477","61478","61479","61480","61481","61482","61483","61484","61485","61486","61487","61488","61489","61490","61491","61492","61493","61494","61495","61496","61497","61498","61499","61500","61501","61502","61503","61504","61505","61506","61507","61508","61509","61510","61511","61512","61513","61514","61515","61516","61517","61518","61519","61520","61521","61522","61523","61524","61525","61526","61527","61528","61529","61530","61531","61532","61533","61534","61535","61536","61537","61538","61539","61540","61541","61542","61543","61544","61545","61546","61547","61548","61549","61550","61551","61552","61553","61554","61555","61556","61557","61558","61559","61560","61561","61562","61563","61564","61565","61566","61567","61568","61569","61570","61571","61572","61573","61574","61575","61576","61577","61578","61579","61580","61581","61582","61583","61584","61585","61586","61587","61588","61589","61590","61591","61592","61593","61594","61595","61596","61597","61598","61599","61600","61601","61602","61603","61604","61605","61606","61607","61608","61609","61610","61611","61612","61613","61614","61615","61616","61617","61618","61619","61620","61621","61622","61623","61624","61625","61626","61627","61628","61629","61630","61631","61632","61633","61634","61635","61636","61637","61638","61639","61640","61641","61642","61643","61644","61645","61646","61647","61648","61649","61650","61651","61652","61653","61654","61655","61656","61657","61658","61659","61660","61661","61662","61663","61664","61665","61666","61667","61668","61669","61670","61671","61672","61673","61674","61675","61676","61677","61678","61679","61680","61681","61682","61683","61684","61685","61686","61687","61688","61689","61690","61691","61692","61693","61694","61695","61696","61697","61698","61699","61700","61701","61702","61703","61704","61705","61706","61707","61708","61709","61710","61711","61712","61713","61714","61715","61716","61717","61718","61719","61720","61721","61722","61723","61724","61725","61726","61727","61728","61729","61730","61731","61732","61733","61734","61735","61736","61737","61738","61739","61740","61741","61742","61743","61744","61745","61746","61747","61748","61749","61750","61751","61752","61753","61754","61755","61756","61757","61758","61759","61760","61761","61762","61763","61764","61765","61766","61767","61768","61769","61770","61771","61772","61773","61774","61775","61776","61777","61778","61779","61780","61781","61782","61783","61784","61785","61786","61787","61788","61789","61790","61791","61792","61793","61794","61795","61796","61797","61798","61799","61800","61801","61802","61803","61804","61805","61806","61807","61808","61809","61810","61811","61812","61813","61814","61815","61816","61817","61818","61819","61820","61821","61822","61823","61824","61825","61826","61827","61828","61829","61830","61831","61832","61833","61834","61835","61836","61837","61838","61839","61840","61841","61842","61843","61844","61845","61846","61847","61848","61849","61850","61851","61852","61853","61854","61855","61856","61857","61858","61859","61860","61861","61862","61863","61864","61865","61866","61867","61868","61869","61870","61871","61872","61873","61874","61875","61876","61877","61878","61879","61880","61881","61882","61883","61884","61885","61886","61887","61888","61889","61890","61891","61892","61893","61894","61895","61896","61897","61898","61899","61900","61901","61902","61903","61904","61905","61906","61907","61908","61909","61910","61911","61912","61913","61914","61915","61916","61917","61918","61919","61920","61921","61922","61923","61924","61925","61926","61927","61928","61929","61930","61931","61932","61933","61934","61935","61936","61937","61938","61939","61940","61941","61942","61943","61944","61945","61946","61947","61948","61949","61950","61951","61952","61953","61954","61955","61956","61957","61958","61959","61960","61961","61962","61963","61964","61965","61966","61967","61968","61969","61970","61971","61972","61973","61974","61975","61976","61977","61978","61979","61980","61981","61982","61983","61984","61985","61986","61987","61988","61989","61990","61991","61992","61993","61994","61995","61996","61997","61998","61999","62000","62001","62002","62003","62004","62005","62006","62007","62008","62009","62010","62011","62012","62013","62014","62015","62016","62017","62018","62019","62020","62021","62022","62023","62024","62025","62026","62027","62028","62029","62030","62031","62032","62033","62034","62035","62036","62037","62038","62039","62040","62041","62042","62043","62044","62045","62046","62047","62048","62049","62050","62051","62052","62053","62054","62055","62056","62057","62058","62059","62060","62061","62062","62063","62064","62065","62066","62067","62068","62069","62070","62071","62072","62073","62074","62075","62076","62077","62078","62079","62080","62081","62082","62083","62084","62085","62086","62087","62088","62089","62090","62091","62092","62093","62094","62095","62096","62097","62098","62099","62100","62101","62102","62103","62104","62105","62106","62107","62108","62109","62110","62111","62112","62113","62114","62115","62116","62117","62118","62119","62120","62121","62122","62123","62124","62125","62126","62127","62128","62129","62130","62131","62132","62133","62134","62135","62136","62137","62138","62139","62140","62141","62142","62143","62144","62145","62146","62147","62148","62149","62150","62151","62152","62153","62154","62155","62156","62157","62158","62159","62160","62161","62162","62163","62164","62165","62166","62167","62168","62169","62170","62171","62172","62173","62174","62175","62176","62177","62178","62179","62180","62181","62182","62183","62184","62185","62186","62187","62188","62189","62190","62191","62192","62193","62194","62195","62196","62197","62198","62199","62200","62201","62202","62203","62204","62205","62206","62207","62208","62209","62210","62211","62212","62213","62214","62215","62216","62217","62218","62219","62220","62221","62222","62223","62224","62225","62226","62227","62228","62229","62230","62231","62232","62233","62234","62235","62236","62237","62238","62239","62240","62241","62242","62243","62244","62245","62246","62247","62248","62249","62250","62251","62252","62253","62254","62255","62256","62257","62258","62259","62260","62261","62262","62263","62264","62265","62266","62267","62268","62269","62270","62271","62272","62273","62274","62275","62276","62277","62278","62279","62280","62281","62282","62283","62284","62285","62286","62287","62288","62289","62290","62291","62292","62293","62294","62295","62296","62297","62298","62299","62300","62301","62302","62303","62304","62305","62306","62307","62308","62309","62310","62311","62312","62313","62314","62315","62316","62317","62318","62319","62320","62321","62322","62323","62324","62325","62326","62327","62328","62329","62330","62331","62332","62333","62334","62335","62336","62337","62338","62339","62340","62341","62342","62343","62344","62345","62346","62347","62348","62349","62350","62351","62352","62353","62354","62355","62356","62357","62358","62359","62360","62361","62362","62363","62364","62365","62366","62367","62368","62369","62370","62371","62372","62373","62374","62375","62376","62377","62378","62379","62380","62381","62382","62383","62384","62385","62386","62387","62388","62389","62390","62391","62392","62393","62394","62395","62396","62397","62398","62399","62400","62401","62402","62403","62404","62405","62406","62407","62408","62409","62410","62411","62412","62413","62414","62415","62416","62417","62418","62419","62420","62421","62422","62423","62424","62425","62426","62427","62428","62429","62430","62431","62432","62433","62434","62435","62436","62437","62438","62439","62440","62441","62442","62443","62444","62445","62446","62447","62448","62449","62450","62451","62452","62453","62454","62455","62456","62457","62458","62459","62460","62461","62462","62463","62464","62465","62466","62467","62468","62469","62470","62471","62472","62473","62474","62475","62476","62477","62478","62479","62480","62481","62482","62483","62484","62485","62486","62487","62488","62489","62490","62491","62492","62493","62494","62495","62496","62497","62498","62499","62500","62501","62502","62503","62504","62505","62506","62507","62508","62509","62510","62511","62512","62513","62514","62515","62516","62517","62518","62519","62520","62521","62522","62523","62524","62525","62526","62527","62528","62529","62530","62531","62532","62533","62534","62535","62536","62537","62538","62539","62540","62541","62542","62543","62544","62545","62546","62547","62548","62549","62550","62551","62552","62553","62554","62555","62556","62557","62558","62559","62560","62561","62562","62563","62564","62565","62566","62567","62568","62569","62570","62571","62572","62573","62574","62575","62576","62577","62578","62579","62580","62581","62582","62583","62584","62585","62586","62587","62588","62589","62590","62591","62592","62593","62594","62595","62596","62597","62598","62599","62600","62601","62602","62603","62604","62605","62606","62607","62608","62609","62610","62611","62612","62613","62614","62615","62616","62617","62618","62619","62620","62621","62622","62623","62624","62625","62626","62627","62628","62629","62630","62631","62632","62633","62634","62635","62636","62637","62638","62639","62640","62641","62642","62643","62644","62645","62646","62647","62648","62649","62650","62651","62652","62653","62654","62655","62656","62657","62658","62659","62660","62661","62662","62663","62664","62665","62666","62667","62668","62669","62670","62671","62672","62673","62674","62675","62676","62677","62678","62679","62680","62681","62682","62683","62684","62685","62686","62687","62688","62689","62690","62691","62692","62693","62694","62695","62696","62697","62698","62699","62700","62701","62702","62703","62704","62705","62706","62707","62708","62709","62710","62711","62712","62713","62714","62715","62716","62717","62718","62719","62720","62721","62722","62723","62724","62725","62726","62727","62728","62729","62730","62731","62732","62733","62734","62735","62736","62737","62738","62739","62740","62741","62742","62743","62744","62745","62746","62747","62748","62749","62750","62751","62752","62753","62754","62755","62756","62757","62758","62759","62760","62761","62762","62763","62764","62765","62766","62767","62768","62769","62770","62771","62772","62773","62774","62775","62776","62777","62778","62779","62780","62781","62782","62783","62784","62785","62786","62787","62788","62789","62790","62791","62792","62793","62794","62795","62796","62797","62798","62799","62800","62801","62802","62803","62804","62805","62806","62807","62808","62809","62810","62811","62812","62813","62814","62815","62816","62817","62818","62819","62820","62821","62822","62823","62824","62825","62826","62827","62828","62829","62830","62831","62832","62833","62834","62835","62836","62837","62838","62839","62840","62841","62842","62843","62844","62845","62846","62847","62848","62849","62850","62851","62852","62853","62854","62855","62856","62857","62858","62859","62860","62861","62862","62863","62864","62865","62866","62867","62868","62869","62870","62871","62872","62873","62874","62875","62876","62877","62878","62879","62880","62881","62882","62883","62884","62885","62886","62887","62888","62889","62890","62891","62892","62893","62894","62895","62896","62897","62898","62899","62900","62901","62902","62903","62904","62905","62906","62907","62908","62909","62910","62911","62912","62913","62914","62915","62916","62917","62918","62919","62920","62921","62922","62923","62924","62925","62926","62927","62928","62929","62930","62931","62932","62933","62934","62935","62936","62937","62938","62939","62940","62941","62942","62943","62944","62945","62946","62947","62948","62949","62950","62951","62952","62953","62954","62955","62956","62957","62958","62959","62960","62961","62962","62963","62964","62965","62966","62967","62968","62969","62970","62971","62972","62973","62974","62975","62976","62977","62978","62979","62980","62981","62982","62983","62984","62985","62986","62987","62988","62989","62990","62991","62992","62993","62994","62995","62996","62997","62998","62999","63000","63001","63002","63003","63004","63005","63006","63007","63008","63009","63010","63011","63012","63013","63014","63015","63016","63017","63018","63019","63020","63021","63022","63023","63024","63025","63026","63027","63028","63029","63030","63031","63032","63033","63034","63035","63036","63037","63038","63039","63040","63041","63042","63043","63044","63045","63046","63047","63048","63049","63050","63051","63052","63053","63054","63055","63056","63057","63058","63059","63060","63061","63062","63063","63064","63065","63066","63067","63068","63069","63070","63071","63072","63073","63074","63075","63076","63077","63078","63079","63080","63081","63082","63083","63084","63085","63086","63087","63088","63089","63090","63091","63092","63093","63094","63095","63096","63097","63098","63099","63100","63101","63102","63103","63104","63105","63106","63107","63108","63109","63110","63111","63112","63113","63114","63115","63116","63117","63118","63119","63120","63121","63122","63123","63124","63125","63126","63127","63128","63129","63130","63131","63132","63133","63134","63135","63136","63137","63138","63139","63140","63141","63142","63143","63144","63145","63146","63147","63148","63149","63150","63151","63152","63153","63154","63155","63156","63157","63158","63159","63160","63161","63162","63163","63164","63165","63166","63167","63168","63169","63170","63171","63172","63173","63174","63175","63176","63177","63178","63179","63180","63181","63182","63183","63184","63185","63186","63187","63188","63189","63190","63191","63192","63193","63194","63195","63196","63197","63198","63199","63200","63201","63202","63203","63204","63205","63206","63207","63208","63209","63210","63211","63212","63213","63214","63215","63216","63217","63218","63219","63220","63221","63222","63223","63224","63225","63226","63227","63228","63229","63230","63231","63232","63233","63234","63235","63236","63237","63238","63239","63240","63241","63242","63243","63244","63245","63246","63247","63248","63249","63250","63251","63252","63253","63254","63255","63256","63257","63258","63259","63260","63261","63262","63263","63264","63265","63266","63267","63268","63269","63270","63271","63272","63273","63274","63275","63276","63277","63278","63279","63280","63281","63282","63283","63284","63285","63286","63287","63288","63289","63290","63291","63292","63293","63294","63295","63296","63297","63298","63299","63300","63301","63302","63303","63304","63305","63306","63307","63308","63309","63310","63311","63312","63313","63314","63315","63316","63317","63318","63319","63320","63321","63322","63323","63324","63325","63326","63327","63328","63329","63330","63331","63332","63333","63334","63335","63336","63337","63338","63339","63340","63341","63342","63343","63344","63345","63346","63347","63348","63349","63350","63351","63352","63353","63354","63355","63356","63357","63358","63359","63360","63361","63362","63363","63364","63365","63366","63367","63368","63369","63370","63371","63372","63373","63374","63375","63376","63377","63378","63379","63380","63381","63382","63383","63384","63385","63386","63387","63388","63389","63390","63391","63392","63393","63394","63395","63396","63397","63398","63399","63400","63401","63402","63403","63404","63405","63406","63407","63408","63409","63410","63411","63412","63413","63414","63415","63416","63417","63418","63419","63420","63421","63422","63423","63424","63425","63426","63427","63428","63429","63430","63431","63432","63433","63434","63435","63436","63437","63438","63439","63440","63441","63442","63443","63444","63445","63446","63447","63448","63449","63450","63451","63452","63453","63454","63455","63456","63457","63458","63459","63460","63461","63462","63463","63464","63465","63466","63467","63468","63469","63470","63471","63472","63473","63474","63475","63476","63477","63478","63479","63480","63481","63482","63483","63484","63485","63486","63487","63488","63489","63490","63491","63492","63493","63494","63495","63496","63497","63498","63499","63500","63501","63502","63503","63504","63505","63506","63507","63508","63509","63510","63511","63512","63513","63514","63515","63516","63517","63518","63519","63520","63521","63522","63523","63524","63525","63526","63527","63528","63529","63530","63531","63532","63533","63534","63535","63536","63537","63538","63539","63540","63541","63542","63543","63544","63545","63546","63547","63548","63549","63550","63551","63552","63553","63554","63555","63556","63557","63558","63559","63560","63561","63562","63563","63564","63565","63566","63567","63568","63569","63570","63571","63572","63573","63574","63575","63576","63577","63578","63579","63580","63581","63582","63583","63584","63585","63586","63587","63588","63589","63590","63591","63592","63593","63594","63595","63596","63597","63598","63599","63600","63601","63602","63603","63604","63605","63606","63607","63608","63609","63610","63611","63612","63613","63614","63615","63616","63617","63618","63619","63620","63621","63622","63623","63624","63625","63626","63627","63628","63629","63630","63631","63632","63633","63634","63635","63636","63637","63638","63639","63640","63641","63642","63643","63644","63645","63646","63647","63648","63649","63650","63651","63652","63653","63654","63655","63656","63657","63658","63659","63660","63661","63662","63663","63664","63665","63666","63667","63668","63669","63670","63671","63672","63673","63674","63675","63676","63677","63678","63679","63680","63681","63682","63683","63684","63685","63686","63687","63688","63689","63690","63691","63692","63693","63694","63695","63696","63697","63698","63699","63700","63701","63702","63703","63704","63705","63706","63707","63708","63709","63710","63711","63712","63713","63714","63715","63716","63717","63718","63719","63720","63721","63722","63723","63724","63725","63726","63727","63728","63729","63730","63731","63732","63733","63734","63735","63736","63737","63738","63739","63740","63741","63742","63743","63744","63745","63746","63747","63748","63749","63750","63751","63752","63753","63754","63755","63756","63757","63758","63759","63760","63761","63762","63763","63764","63765","63766","63767","63768","63769","63770","63771","63772","63773","63774","63775","63776","63777","63778","63779","63780","63781","63782","63783","63784","63785","63786","63787","63788","63789","63790","63791","63792","63793","63794"}; -------------------------------------------------------------------------------- /app/src/main/assets/materialdesignicons-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-mc/material-icon-lib/dacdd82c9ae4b36a8fdd9a390df6bac51eb8d2a9/app/src/main/assets/materialdesignicons-webfont.ttf -------------------------------------------------------------------------------- /app/src/main/assets/parse.py: -------------------------------------------------------------------------------- 1 | def dumpSvg(): 2 | with open("icons.svg") as f: 3 | with open("out.txt", "w+") as o: 4 | write = "" 5 | content = f.read() 6 | parsed = [] 7 | for i in content.split('glyph-name="')[1:]: 8 | try: 9 | write += i.split('unicode="')[0].split('"')[0] + "\t" 10 | write += i.split('unicode="')[1][0:8] + "\n" 11 | except: 12 | continue 13 | o.write(write) 14 | 15 | def writeXml(): 16 | with open("out.txt", "r+") as f: 17 | content = f.read() 18 | 19 | srtd = list() 20 | for index, i in enumerate(content.split('\n')): 21 | try: 22 | enum = i.split("\t") 23 | name = enum[0] 24 | hexcode = enum[1] 25 | 26 | if name in ["import", "package", "switch", "null"]: 27 | name += "-icon" 28 | 29 | hexcode = hexcode.replace("&#", "0")[:-1] 30 | srtd.append((int(hexcode, 16), name)) 31 | except: 32 | continue 33 | 34 | srtd.sort() 35 | 36 | parsed = """ 37 | 38 | 39 | 40 | {0} 41 | 42 | 43 | """ 44 | write = "" 45 | arr = list() 46 | arrhex = list() 47 | print "start code:", srtd[0], hex(srtd[0][0]) 48 | prevhex = srtd[0][0] - 1 49 | for index, i in enumerate(srtd): 50 | try: 51 | name = str(i[1]) 52 | hexcode = str(i[0]) 53 | 54 | if i[0] != prevhex + 1: 55 | print "gap in hexcodes:", prevhex, i[0] 56 | prevhex = i[0] 57 | 58 | write += """\t\t\t\n""".format(name.replace("-","_"), str(index)) 59 | arr.append(name) 60 | arrhex.append(hexcode) 61 | except: 62 | continue 63 | with open("enumxml.xml", "w+") as o: 64 | o.write(parsed.format(write)) 65 | with open("enumjava.java", "w+") as j: 66 | j.write('{"' + '","'.join(arr) + '"};') 67 | with open("enumjavahex.java", "w+") as j: 68 | j.write('{"' + '","'.join(arrhex) + '"};') 69 | with open("enumjavaenum.java", "w+") as j: 70 | j.write('{' + ','.join(arr).replace("-","_").upper() + '};') 71 | 72 | dumpSvg() 73 | writeXml() -------------------------------------------------------------------------------- /app/src/main/java/net/steamcrafted/materialiconview/ImageAdapter.java: -------------------------------------------------------------------------------- 1 | package net.steamcrafted.materialiconview; 2 | 3 | import android.graphics.Color; 4 | import android.support.annotation.NonNull; 5 | import android.util.Log; 6 | import android.view.LayoutInflater; 7 | import android.view.View; 8 | import android.view.ViewGroup; 9 | import android.widget.AbsListView; 10 | import android.widget.BaseAdapter; 11 | import android.widget.FrameLayout; 12 | import android.widget.ImageView; 13 | import android.widget.TextView; 14 | 15 | import net.steamcrafted.materialiconlib.MaterialDrawableBuilder; 16 | import net.steamcrafted.materialiconlib.MaterialIconUtils; 17 | import net.steamcrafted.materialiconlib.MaterialIconView; 18 | 19 | import java.util.List; 20 | 21 | /** 22 | * Created by Wannes2 on 21/07/2015. 23 | */ 24 | public class ImageAdapter extends BaseAdapter { 25 | 26 | List icons; 27 | 28 | public ImageAdapter(@NonNull List iconin){ 29 | this.icons = iconin; 30 | } 31 | 32 | @Override 33 | public int getCount() { 34 | return icons.size(); 35 | } 36 | 37 | @Override 38 | public Object getItem(int i) { 39 | return icons.get(i); 40 | } 41 | 42 | @Override 43 | public long getItemId(int i) { 44 | return i; 45 | } 46 | 47 | @Override 48 | public View getView(int i, View view, ViewGroup viewGroup) { 49 | if(view == null){ 50 | view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.image_list_item, null, false); 51 | view.setLayoutParams(new AbsListView.LayoutParams(AbsListView.LayoutParams.WRAP_CONTENT, AbsListView.LayoutParams.WRAP_CONTENT)); 52 | } 53 | FrameLayout host = (FrameLayout) view; 54 | ImageView v = (ImageView) host.getChildAt(0); 55 | TextView tv = (TextView) host.getChildAt(1); 56 | v.setImageDrawable( 57 | MaterialDrawableBuilder.with(viewGroup.getContext()) 58 | .setIcon(icons.get(i)) 59 | .setColor(Color.BLACK) 60 | .setSizePx(viewGroup.getWidth() / 5) 61 | .build() 62 | ); 63 | tv.setText(icons.get(i).name()); 64 | return view; 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /app/src/main/java/net/steamcrafted/materialiconview/MainActivity.java: -------------------------------------------------------------------------------- 1 | package net.steamcrafted.materialiconview; 2 | 3 | import android.graphics.Color; 4 | import android.os.Bundle; 5 | import android.support.v7.app.AppCompatActivity; 6 | import android.support.v7.view.SupportMenuInflater; 7 | import android.support.v7.widget.Toolbar; 8 | import android.view.Menu; 9 | import android.widget.GridView; 10 | 11 | import net.steamcrafted.materialiconlib.MaterialDrawableBuilder; 12 | import net.steamcrafted.materialiconlib.MaterialIconView; 13 | import net.steamcrafted.materialiconlib.MaterialMenuInflater; 14 | 15 | import java.util.Arrays; 16 | import java.util.List; 17 | 18 | public class MainActivity extends AppCompatActivity { 19 | 20 | MaterialIconView mIcon; 21 | GridView mListview; 22 | 23 | @Override 24 | protected void onCreate(Bundle savedInstanceState) { 25 | super.onCreate(savedInstanceState); 26 | 27 | 28 | setContentView(R.layout.activity_main); 29 | 30 | mListview = (GridView) findViewById(R.id.listview); 31 | List vals = Arrays.asList(MaterialDrawableBuilder.IconValue.values()); 32 | 33 | ImageAdapter adapt = new ImageAdapter(vals); 34 | mListview.setAdapter(adapt); 35 | 36 | final Toolbar toolbar1 = (Toolbar) findViewById(R.id.toolbar_1); 37 | MaterialMenuInflater.with(toolbar1.getContext(), new SupportMenuInflater(toolbar1.getContext())) 38 | .inflate(R.menu.menu_nocolor, toolbar1.getMenu()); 39 | 40 | 41 | // Activity Theme materialIconColor attribute (lowest priority default color) 42 | // View specific Theme e.g. app:theme="..." (2nd lowest in priority) 43 | // setDefaultColor(Resource) methods (highest priority default color) 44 | // app:materialIconColor set on an tag in the menu XML file (overrides any other color choice) 45 | 46 | MaterialMenuInflater 47 | .with(this) 48 | .setDefaultColor(Color.BLUE) 49 | .inflate(R.menu.menu_nocolor, toolbar1.getMenu()); 50 | 51 | 52 | /* 53 | setContentView(R.layout.circletest); 54 | ((CircleImageView)findViewById(R.id.profile_image)).setImageDrawable( 55 | MaterialDrawableBuilder.with(this) 56 | .setSizeDp(96) 57 | .setIcon(MaterialDrawableBuilder.IconValue.FACEBOOK_BOX) 58 | .setColor(Color.BLUE) 59 | .build() 60 | ); 61 | */ 62 | 63 | 64 | /*mIcon = (MaterialIconView) findViewById(R.id.icon); 65 | ImageView imgicon = (ImageView) findViewById(R.id.image_icon); 66 | 67 | mIcon.setIcon(MaterialDrawableBuilder.IconValue.CONTENT_COPY); 68 | imgicon.setImageDrawable( 69 | MaterialDrawableBuilder.with(this) 70 | .setColor(Color.WHITE) 71 | .setToActionbarSize() 72 | .setIcon(MaterialDrawableBuilder.IconValue.AMAZON_CLOUDDRIVE) 73 | .build() 74 | ); 75 | */ 76 | } 77 | 78 | @Override 79 | public boolean onCreateOptionsMenu(Menu menu) { 80 | MaterialMenuInflater.with(this).inflate(R.menu.menu_main, menu); 81 | return true; 82 | } 83 | 84 | 85 | } 86 | -------------------------------------------------------------------------------- /app/src/main/java/net/steamcrafted/materialiconview/SetBoundsTest.java: -------------------------------------------------------------------------------- 1 | package net.steamcrafted.materialiconview; 2 | 3 | import android.content.Context; 4 | import android.content.res.TypedArray; 5 | import android.graphics.Canvas; 6 | import android.graphics.Color; 7 | import android.graphics.Paint; 8 | import android.graphics.Rect; 9 | import android.graphics.drawable.Drawable; 10 | import android.text.TextPaint; 11 | import android.util.AttributeSet; 12 | import android.view.View; 13 | 14 | import net.steamcrafted.materialiconlib.MaterialDrawableBuilder; 15 | 16 | /** 17 | * TODO: document your custom view class. 18 | */ 19 | public class SetBoundsTest extends View { 20 | 21 | private Drawable mDrawable; 22 | private Drawable mDrawable2; 23 | 24 | public SetBoundsTest(Context context) { 25 | super(context); 26 | init(null, 0); 27 | } 28 | 29 | public SetBoundsTest(Context context, AttributeSet attrs) { 30 | super(context, attrs); 31 | init(attrs, 0); 32 | } 33 | 34 | public SetBoundsTest(Context context, AttributeSet attrs, int defStyle) { 35 | super(context, attrs, defStyle); 36 | init(attrs, defStyle); 37 | } 38 | 39 | private void init(final AttributeSet attrs, final int defStyle) { 40 | mDrawable = MaterialDrawableBuilder.with(getContext()) 41 | .setIcon(MaterialDrawableBuilder.IconValue.NUMERIC_7_BOX) 42 | .setColor(Color.RED) 43 | .setSizeDp(1) 44 | .build(); 45 | 46 | mDrawable2 = getResources().getDrawable(R.mipmap.ic_launcher); 47 | } 48 | 49 | @Override 50 | protected void onDraw(Canvas canvas) { 51 | super.onDraw(canvas); 52 | 53 | Paint p = new Paint(); 54 | p.setColor(Color.BLACK); 55 | 56 | Rect bounds = new Rect(0, 100, getMeasuredHeight(), getMeasuredHeight()); 57 | 58 | canvas.drawRect(bounds, p); 59 | mDrawable.setBounds(bounds); 60 | mDrawable.draw(canvas); 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/compare.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 72 | 73 | 74 | 75 | 76 | 81 | 82 | 88 | 89 | 92 | 93 | 102 | 103 | 114 | 115 | 116 | -------------------------------------------------------------------------------- /app/src/main/res/layout/example.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 18 | 19 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/layout/image_list_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 8 | 9 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_main.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_nocolor.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-mc/material-icon-lib/dacdd82c9ae4b36a8fdd9a390df6bac51eb8d2a9/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-mc/material-icon-lib/dacdd82c9ae4b36a8fdd9a390df6bac51eb8d2a9/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-mc/material-icon-lib/dacdd82c9ae4b36a8fdd9a390df6bac51eb8d2a9/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-mc/material-icon-lib/dacdd82c9ae4b36a8fdd9a390df6bac51eb8d2a9/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 64dp 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | MaterialIconView 3 | 4 | Hello world! 5 | Settings 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | 14 | 15 | #00a 16 | #f00 17 | 18 | -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | jcenter() 6 | } 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:2.3.0' 9 | 10 | // NOTE: Do not place your application dependencies here; they belong 11 | // in the individual module build.gradle files 12 | } 13 | } 14 | 15 | allprojects { 16 | repositories { 17 | jcenter() 18 | maven { 19 | url "https://maven.google.com" 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m 13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 14 | 15 | # When configured, Gradle will run in incubating parallel mode. 16 | # This option should only be used with decoupled projects. More details, visit 17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 18 | # org.gradle.parallel=true -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-mc/material-icon-lib/dacdd82c9ae4b36a8fdd9a390df6bac51eb8d2a9/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Sat Aug 19 14:20:57 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip 7 | -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ############################################################################## 4 | ## 5 | ## Gradle start up script for UN*X 6 | ## 7 | ############################################################################## 8 | 9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 10 | DEFAULT_JVM_OPTS="" 11 | 12 | APP_NAME="Gradle" 13 | APP_BASE_NAME=`basename "$0"` 14 | 15 | # Use the maximum available, or set MAX_FD != -1 to use that value. 16 | MAX_FD="maximum" 17 | 18 | warn ( ) { 19 | echo "$*" 20 | } 21 | 22 | die ( ) { 23 | echo 24 | echo "$*" 25 | echo 26 | exit 1 27 | } 28 | 29 | # OS specific support (must be 'true' or 'false'). 30 | cygwin=false 31 | msys=false 32 | darwin=false 33 | case "`uname`" in 34 | CYGWIN* ) 35 | cygwin=true 36 | ;; 37 | Darwin* ) 38 | darwin=true 39 | ;; 40 | MINGW* ) 41 | msys=true 42 | ;; 43 | esac 44 | 45 | # Attempt to set APP_HOME 46 | # Resolve links: $0 may be a link 47 | PRG="$0" 48 | # Need this for relative symlinks. 49 | while [ -h "$PRG" ] ; do 50 | ls=`ls -ld "$PRG"` 51 | link=`expr "$ls" : '.*-> \(.*\)$'` 52 | if expr "$link" : '/.*' > /dev/null; then 53 | PRG="$link" 54 | else 55 | PRG=`dirname "$PRG"`"/$link" 56 | fi 57 | done 58 | SAVED="`pwd`" 59 | cd "`dirname \"$PRG\"`/" >/dev/null 60 | APP_HOME="`pwd -P`" 61 | cd "$SAVED" >/dev/null 62 | 63 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 64 | 65 | # Determine the Java command to use to start the JVM. 66 | if [ -n "$JAVA_HOME" ] ; then 67 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 68 | # IBM's JDK on AIX uses strange locations for the executables 69 | JAVACMD="$JAVA_HOME/jre/sh/java" 70 | else 71 | JAVACMD="$JAVA_HOME/bin/java" 72 | fi 73 | if [ ! -x "$JAVACMD" ] ; then 74 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 75 | 76 | Please set the JAVA_HOME variable in your environment to match the 77 | location of your Java installation." 78 | fi 79 | else 80 | JAVACMD="java" 81 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 82 | 83 | Please set the JAVA_HOME variable in your environment to match the 84 | location of your Java installation." 85 | fi 86 | 87 | # Increase the maximum file descriptors if we can. 88 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then 89 | MAX_FD_LIMIT=`ulimit -H -n` 90 | if [ $? -eq 0 ] ; then 91 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 92 | MAX_FD="$MAX_FD_LIMIT" 93 | fi 94 | ulimit -n $MAX_FD 95 | if [ $? -ne 0 ] ; then 96 | warn "Could not set maximum file descriptor limit: $MAX_FD" 97 | fi 98 | else 99 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 100 | fi 101 | fi 102 | 103 | # For Darwin, add options to specify how the application appears in the dock 104 | if $darwin; then 105 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 106 | fi 107 | 108 | # For Cygwin, switch paths to Windows format before running java 109 | if $cygwin ; then 110 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 111 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 112 | JAVACMD=`cygpath --unix "$JAVACMD"` 113 | 114 | # We build the pattern for arguments to be converted via cygpath 115 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 116 | SEP="" 117 | for dir in $ROOTDIRSRAW ; do 118 | ROOTDIRS="$ROOTDIRS$SEP$dir" 119 | SEP="|" 120 | done 121 | OURCYGPATTERN="(^($ROOTDIRS))" 122 | # Add a user-defined pattern to the cygpath arguments 123 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 124 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 125 | fi 126 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 127 | i=0 128 | for arg in "$@" ; do 129 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 130 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 131 | 132 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 133 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 134 | else 135 | eval `echo args$i`="\"$arg\"" 136 | fi 137 | i=$((i+1)) 138 | done 139 | case $i in 140 | (0) set -- ;; 141 | (1) set -- "$args0" ;; 142 | (2) set -- "$args0" "$args1" ;; 143 | (3) set -- "$args0" "$args1" "$args2" ;; 144 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 145 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 146 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 147 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 148 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 149 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 150 | esac 151 | fi 152 | 153 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules 154 | function splitJvmOpts() { 155 | JVM_OPTS=("$@") 156 | } 157 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS 158 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" 159 | 160 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" 161 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 12 | set DEFAULT_JVM_OPTS= 13 | 14 | set DIRNAME=%~dp0 15 | if "%DIRNAME%" == "" set DIRNAME=. 16 | set APP_BASE_NAME=%~n0 17 | set APP_HOME=%DIRNAME% 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windowz variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | if "%@eval[2+2]" == "4" goto 4NT_args 53 | 54 | :win9xME_args 55 | @rem Slurp the command line arguments. 56 | set CMD_LINE_ARGS= 57 | set _SKIP=2 58 | 59 | :win9xME_args_slurp 60 | if "x%~1" == "x" goto execute 61 | 62 | set CMD_LINE_ARGS=%* 63 | goto execute 64 | 65 | :4NT_args 66 | @rem Get arguments from the 4NT Shell from JP Software 67 | set CMD_LINE_ARGS=%$ 68 | 69 | :execute 70 | @rem Setup the command line 71 | 72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if "%ERRORLEVEL%"=="0" goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 85 | exit /b 1 86 | 87 | :mainEnd 88 | if "%OS%"=="Windows_NT" endlocal 89 | 90 | :omega 91 | -------------------------------------------------------------------------------- /license.md: -------------------------------------------------------------------------------- 1 | Copyright 2015 CodeCrafted. 2 | 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | 16 | ``` 17 | ------------------------------------------------------------------------- 18 | Apache License 19 | Version 2.0, January 2004 20 | http://www.apache.org/licenses/ 21 | 22 | 23 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 24 | 25 | 1. Definitions. 26 | 27 | "License" shall mean the terms and conditions for use, reproduction, 28 | and distribution as defined by Sections 1 through 9 of this document. 29 | 30 | "Licensor" shall mean the copyright owner or entity authorized by 31 | the copyright owner that is granting the License. 32 | 33 | "Legal Entity" shall mean the union of the acting entity and all 34 | other entities that control, are controlled by, or are under common 35 | control with that entity. For the purposes of this definition, 36 | "control" means (i) the power, direct or indirect, to cause the 37 | direction or management of such entity, whether by contract or 38 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 39 | outstanding shares, or (iii) beneficial ownership of such entity. 40 | 41 | "You" (or "Your") shall mean an individual or Legal Entity 42 | exercising permissions granted by this License. 43 | 44 | "Source" form shall mean the preferred form for making modifications, 45 | including but not limited to software source code, documentation 46 | source, and configuration files. 47 | 48 | "Object" form shall mean any form resulting from mechanical 49 | transformation or translation of a Source form, including but 50 | not limited to compiled object code, generated documentation, 51 | and conversions to other media types. 52 | 53 | "Work" shall mean the work of authorship, whether in Source or 54 | Object form, made available under the License, as indicated by a 55 | copyright notice that is included in or attached to the work 56 | (an example is provided in the Appendix below). 57 | 58 | "Derivative Works" shall mean any work, whether in Source or Object 59 | form, that is based on (or derived from) the Work and for which the 60 | editorial revisions, annotations, elaborations, or other modifications 61 | represent, as a whole, an original work of authorship. For the purposes 62 | of this License, Derivative Works shall not include works that remain 63 | separable from, or merely link (or bind by name) to the interfaces of, 64 | the Work and Derivative Works thereof. 65 | 66 | "Contribution" shall mean any work of authorship, including 67 | the original version of the Work and any modifications or additions 68 | to that Work or Derivative Works thereof, that is intentionally 69 | submitted to Licensor for inclusion in the Work by the copyright owner 70 | or by an individual or Legal Entity authorized to submit on behalf of 71 | the copyright owner. For the purposes of this definition, "submitted" 72 | means any form of electronic, verbal, or written communication sent 73 | to the Licensor or its representatives, including but not limited to 74 | communication on electronic mailing lists, source code control systems, 75 | and issue tracking systems that are managed by, or on behalf of, the 76 | Licensor for the purpose of discussing and improving the Work, but 77 | excluding communication that is conspicuously marked or otherwise 78 | designated in writing by the copyright owner as "Not a Contribution." 79 | 80 | "Contributor" shall mean Licensor and any individual or Legal Entity 81 | on behalf of whom a Contribution has been received by Licensor and 82 | subsequently incorporated within the Work. 83 | 84 | 2. Grant of Copyright License. Subject to the terms and conditions of 85 | this License, each Contributor hereby grants to You a perpetual, 86 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 87 | copyright license to reproduce, prepare Derivative Works of, 88 | publicly display, publicly perform, sublicense, and distribute the 89 | Work and such Derivative Works in Source or Object form. 90 | 91 | 3. Grant of Patent License. Subject to the terms and conditions of 92 | this License, each Contributor hereby grants to You a perpetual, 93 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 94 | (except as stated in this section) patent license to make, have made, 95 | use, offer to sell, sell, import, and otherwise transfer the Work, 96 | where such license applies only to those patent claims licensable 97 | by such Contributor that are necessarily infringed by their 98 | Contribution(s) alone or by combination of their Contribution(s) 99 | with the Work to which such Contribution(s) was submitted. If You 100 | institute patent litigation against any entity (including a 101 | cross-claim or counterclaim in a lawsuit) alleging that the Work 102 | or a Contribution incorporated within the Work constitutes direct 103 | or contributory patent infringement, then any patent licenses 104 | granted to You under this License for that Work shall terminate 105 | as of the date such litigation is filed. 106 | 107 | 4. Redistribution. You may reproduce and distribute copies of the 108 | Work or Derivative Works thereof in any medium, with or without 109 | modifications, and in Source or Object form, provided that You 110 | meet the following conditions: 111 | 112 | (a) You must give any other recipients of the Work or 113 | Derivative Works a copy of this License; and 114 | 115 | (b) You must cause any modified files to carry prominent notices 116 | stating that You changed the files; and 117 | 118 | (c) You must retain, in the Source form of any Derivative Works 119 | that You distribute, all copyright, patent, trademark, and 120 | attribution notices from the Source form of the Work, 121 | excluding those notices that do not pertain to any part of 122 | the Derivative Works; and 123 | 124 | (d) If the Work includes a "NOTICE" text file as part of its 125 | distribution, then any Derivative Works that You distribute must 126 | include a readable copy of the attribution notices contained 127 | within such NOTICE file, excluding those notices that do not 128 | pertain to any part of the Derivative Works, in at least one 129 | of the following places: within a NOTICE text file distributed 130 | as part of the Derivative Works; within the Source form or 131 | documentation, if provided along with the Derivative Works; or, 132 | within a display generated by the Derivative Works, if and 133 | wherever such third-party notices normally appear. The contents 134 | of the NOTICE file are for informational purposes only and 135 | do not modify the License. You may add Your own attribution 136 | notices within Derivative Works that You distribute, alongside 137 | or as an addendum to the NOTICE text from the Work, provided 138 | that such additional attribution notices cannot be construed 139 | as modifying the License. 140 | 141 | You may add Your own copyright statement to Your modifications and 142 | may provide additional or different license terms and conditions 143 | for use, reproduction, or distribution of Your modifications, or 144 | for any such Derivative Works as a whole, provided Your use, 145 | reproduction, and distribution of the Work otherwise complies with 146 | the conditions stated in this License. 147 | 148 | 5. Submission of Contributions. Unless You explicitly state otherwise, 149 | any Contribution intentionally submitted for inclusion in the Work 150 | by You to the Licensor shall be under the terms and conditions of 151 | this License, without any additional terms or conditions. 152 | Notwithstanding the above, nothing herein shall supersede or modify 153 | the terms of any separate license agreement you may have executed 154 | with Licensor regarding such Contributions. 155 | 156 | 6. Trademarks. This License does not grant permission to use the trade 157 | names, trademarks, service marks, or product names of the Licensor, 158 | except as required for reasonable and customary use in describing the 159 | origin of the Work and reproducing the content of the NOTICE file. 160 | 161 | 7. Disclaimer of Warranty. Unless required by applicable law or 162 | agreed to in writing, Licensor provides the Work (and each 163 | Contributor provides its Contributions) on an "AS IS" BASIS, 164 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 165 | implied, including, without limitation, any warranties or conditions 166 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 167 | PARTICULAR PURPOSE. You are solely responsible for determining the 168 | appropriateness of using or redistributing the Work and assume any 169 | risks associated with Your exercise of permissions under this License. 170 | 171 | 8. Limitation of Liability. In no event and under no legal theory, 172 | whether in tort (including negligence), contract, or otherwise, 173 | unless required by applicable law (such as deliberate and grossly 174 | negligent acts) or agreed to in writing, shall any Contributor be 175 | liable to You for damages, including any direct, indirect, special, 176 | incidental, or consequential damages of any character arising as a 177 | result of this License or out of the use or inability to use the 178 | Work (including but not limited to damages for loss of goodwill, 179 | work stoppage, computer failure or malfunction, or any and all 180 | other commercial damages or losses), even if such Contributor 181 | has been advised of the possibility of such damages. 182 | 183 | 9. Accepting Warranty or Additional Liability. While redistributing 184 | the Work or Derivative Works thereof, You may choose to offer, 185 | and charge a fee for, acceptance of support, warranty, indemnity, 186 | or other liability obligations and/or rights consistent with this 187 | License. However, in accepting such obligations, You may act only 188 | on Your own behalf and on Your sole responsibility, not on behalf 189 | of any other Contributor, and only if You agree to indemnify, 190 | defend, and hold each Contributor harmless for any liability 191 | incurred by, or claims asserted against, such Contributor by reason 192 | of your accepting any such warranty or additional liability. 193 | 194 | END OF TERMS AND CONDITIONS 195 | ``` 196 | -------------------------------------------------------------------------------- /materialiconlib/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /materialiconlib/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | 4 | ext { 5 | PUBLISH_GROUP_ID = 'net.steamcrafted' 6 | PUBLISH_ARTIFACT_ID = 'materialiconlib' 7 | PUBLISH_VERSION = '1.1.5' 8 | } 9 | 10 | android { 11 | compileSdkVersion 27 12 | buildToolsVersion '25.0.3' 13 | 14 | defaultConfig { 15 | minSdkVersion 4 16 | targetSdkVersion 27 17 | versionCode 1 18 | versionName "1.0" 19 | } 20 | buildTypes { 21 | release { 22 | minifyEnabled false 23 | } 24 | } 25 | 26 | lintOptions { 27 | abortOnError false 28 | } 29 | 30 | } 31 | 32 | apply from: 'https://raw.githubusercontent.com/ArthurHub/release-android-library/master/android-release-aar.gradle' -------------------------------------------------------------------------------- /materialiconlib/materialiconlib.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | 11 | 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 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | -------------------------------------------------------------------------------- /materialiconlib/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in C:\Users\Wannes2\AppData\Local\Android\android-studio\sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /materialiconlib/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /materialiconlib/src/main/assets/materialdesignicons-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-mc/material-icon-lib/dacdd82c9ae4b36a8fdd9a390df6bac51eb8d2a9/materialiconlib/src/main/assets/materialdesignicons-webfont.ttf -------------------------------------------------------------------------------- /materialiconlib/src/main/java/net/steamcrafted/materialiconlib/MaterialIconUtils.java: -------------------------------------------------------------------------------- 1 | package net.steamcrafted.materialiconlib; 2 | 3 | import android.content.Context; 4 | import android.graphics.Typeface; 5 | 6 | import static android.util.TypedValue.COMPLEX_UNIT_DIP; 7 | import static android.util.TypedValue.applyDimension; 8 | 9 | /** 10 | * Created by Wannes2 on 19/07/2015. 11 | */ 12 | public class MaterialIconUtils { 13 | private static final String mFontPath = "materialdesignicons-webfont.ttf"; 14 | private static Typeface materialFont; 15 | 16 | private MaterialIconUtils() { 17 | // Prevents instantiation 18 | } 19 | 20 | static Typeface getTypeFace(Context context){ 21 | if(materialFont == null) materialFont = Typeface.createFromAsset(context.getAssets(), mFontPath); 22 | return materialFont; 23 | } 24 | 25 | static int convertDpToPx(Context context, float dp) { 26 | return (int) applyDimension(COMPLEX_UNIT_DIP, dp, 27 | context.getResources().getDisplayMetrics()); 28 | } 29 | 30 | public static String getIconString(int iconIndex){ 31 | return new String(Character.toChars(0xF001 + iconIndex)); 32 | } 33 | 34 | public static int getColorResource(Context context, int colorResource){ 35 | if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { 36 | return context.getResources().getColor(colorResource, context.getTheme()); 37 | }else{ 38 | return context.getResources().getColor(colorResource); 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /materialiconlib/src/main/java/net/steamcrafted/materialiconlib/MaterialIconView.java: -------------------------------------------------------------------------------- 1 | package net.steamcrafted.materialiconlib; 2 | 3 | import android.content.Context; 4 | import android.content.res.TypedArray; 5 | import android.graphics.Canvas; 6 | import android.graphics.Color; 7 | import android.graphics.Paint; 8 | import android.graphics.drawable.Drawable; 9 | import android.util.AttributeSet; 10 | import android.widget.ImageView; 11 | 12 | /** 13 | * Created by Wannes2 on 21/07/2015. 14 | */ 15 | public class MaterialIconView extends ImageView { 16 | 17 | private MaterialDrawableBuilder mBuilder; 18 | private Drawable mDrawable; 19 | private MaterialDrawableBuilder.IconValue mIcon; 20 | private int mOverruledSize = -1; 21 | 22 | private static final int ACTIONBAR_HEIGHT_DP = 24; 23 | 24 | public MaterialIconView(Context context) { 25 | super(context); 26 | init(); 27 | } 28 | 29 | public MaterialIconView(Context context, AttributeSet attrs) { 30 | super(context, attrs); 31 | 32 | init(context, attrs); 33 | } 34 | 35 | public MaterialIconView(Context context, AttributeSet attrs, int defStyle) { 36 | super(context, attrs, defStyle); 37 | 38 | init(context, attrs); 39 | } 40 | 41 | @Override 42 | protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 43 | if(mDrawable == null){ 44 | int size = MaterialIconUtils.convertDpToPx(getContext(), 24); 45 | final int width = MeasureSpec.getMode(widthMeasureSpec); 46 | final int height = MeasureSpec.getMode(heightMeasureSpec); 47 | 48 | int paddinghori = getPaddingLeft() + getPaddingRight(); 49 | int paddingvert = getPaddingTop() + getPaddingBottom(); 50 | 51 | if(width == MeasureSpec.UNSPECIFIED && height == MeasureSpec.UNSPECIFIED){ 52 | // do nothing, just default 24 dp size 53 | }else if(width == MeasureSpec.UNSPECIFIED){ 54 | size = MeasureSpec.getSize(heightMeasureSpec) - paddingvert; 55 | }else if(height == MeasureSpec.UNSPECIFIED){ 56 | size = MeasureSpec.getSize(widthMeasureSpec) - paddinghori; 57 | }else{ 58 | size = Math.min(MeasureSpec.getSize(heightMeasureSpec) - paddingvert, 59 | MeasureSpec.getSize(widthMeasureSpec) - paddinghori); 60 | } 61 | size = Math.max(0, size); 62 | super.onMeasure(widthMeasureSpec, heightMeasureSpec); 63 | regenerateDrawable(); 64 | }else{ 65 | super.onMeasure(widthMeasureSpec, heightMeasureSpec); 66 | } 67 | 68 | } 69 | 70 | private void init(){ 71 | mBuilder = MaterialDrawableBuilder.with(getContext()); 72 | } 73 | 74 | private void init(Context context, AttributeSet attrs){ 75 | init(); 76 | 77 | TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.MaterialIconViewFormat); 78 | try { 79 | int type = array.getInt(R.styleable.MaterialIconViewFormat_materialIcon, 0); 80 | 81 | if(type >= 0) setIcon(type); 82 | } catch (Exception e){ 83 | 84 | } 85 | try { 86 | int color = array.getColor(R.styleable.MaterialIconViewFormat_materialIconColor, Color.BLACK); 87 | 88 | setColor(color); 89 | } catch (Exception e){ 90 | 91 | } 92 | try { 93 | int size = array.getDimensionPixelSize(R.styleable.MaterialIconViewFormat_materialIconSize, -1); 94 | 95 | if(size >= 0) setSizePx(size); 96 | } catch (Exception e){ 97 | 98 | } 99 | 100 | array.recycle(); 101 | } 102 | 103 | private void setIcon(int iconIndex){ 104 | setIcon(MaterialDrawableBuilder.IconValue.values()[iconIndex]); 105 | } 106 | 107 | public void setIcon(MaterialDrawableBuilder.IconValue iconValue){ 108 | mIcon = iconValue; 109 | mBuilder.setIcon(iconValue); 110 | regenerateDrawable(); 111 | } 112 | 113 | /** 114 | * Set the size of this icon to the standard Android ActionBar. 115 | */ 116 | public void setToActionbarSize() { 117 | setSizeDp(ACTIONBAR_HEIGHT_DP); 118 | } 119 | 120 | /** 121 | * Set the size of the drawable. 122 | * 123 | * @param dimenRes The dimension resource. 124 | */ 125 | public void setSizeResource(int dimenRes) { 126 | mBuilder.setSizeResource(dimenRes); 127 | mOverruledSize = (getContext().getResources().getDimensionPixelSize(dimenRes)); 128 | regenerateDrawable(); 129 | } 130 | 131 | /** 132 | * Set the size of the drawable. 133 | * 134 | * @param size The size in density-independent pixels (dp). 135 | */ 136 | public void setSizeDp(int size) { 137 | mBuilder.setSizeDp(size); 138 | mOverruledSize = MaterialIconUtils.convertDpToPx(getContext(), size); 139 | regenerateDrawable(); 140 | } 141 | 142 | /** 143 | * Set the size of the drawable. 144 | * 145 | * @param size The size in pixels (px). 146 | */ 147 | public void setSizePx(int size) { 148 | mBuilder.setSizePx(size); 149 | mOverruledSize = size; 150 | regenerateDrawable(); 151 | } 152 | 153 | /** 154 | * Set the color of the drawable. 155 | * 156 | * @param color The color, usually from android.graphics.Color or 0xFF012345. 157 | */ 158 | public void setColor(int color) { 159 | mBuilder.setColor(color); 160 | regenerateDrawable(); 161 | } 162 | 163 | /** 164 | * Set the color of the drawable. 165 | * 166 | * @param colorRes The color resource, from your R file. 167 | */ 168 | public void setColorResource(int colorRes) { 169 | mBuilder.setColorResource(colorRes); 170 | regenerateDrawable(); 171 | } 172 | 173 | /** 174 | * Sets paint style. 175 | * 176 | * @param style to be applied 177 | */ 178 | public void setStyle(Paint.Style style) { 179 | mBuilder.setStyle(style); 180 | regenerateDrawable(); 181 | } 182 | 183 | private void regenerateDrawable(){ 184 | if(mIcon != null){ 185 | mDrawable = mBuilder.build(); 186 | super.setImageDrawable(mDrawable); 187 | } 188 | } 189 | 190 | @Override 191 | protected void onDraw(Canvas canvas) { 192 | if (getWidth() == 0 || getHeight() == 0) return; 193 | 194 | int scaledWidth = getMeasuredWidth(); 195 | int scaledHeight = getMeasuredHeight(); 196 | int scaleddimen = (mOverruledSize >= 0) ? mOverruledSize : Math.min(scaledHeight, scaledWidth); 197 | 198 | boolean redraw = false; 199 | if(mDrawable == null){ 200 | redraw = true; 201 | }else{ 202 | int initialdimen = Math.min(mDrawable.getIntrinsicHeight(), mDrawable.getIntrinsicHeight()); 203 | if(initialdimen != scaleddimen){ 204 | redraw = true; 205 | } 206 | } 207 | 208 | if(redraw){ 209 | if(mOverruledSize >= 0){ 210 | mBuilder.setSizePx(mOverruledSize); 211 | }else{ 212 | mBuilder.setSizePx(scaleddimen); 213 | } 214 | regenerateDrawable(); 215 | } 216 | 217 | super.onDraw(canvas); 218 | } 219 | 220 | 221 | } -------------------------------------------------------------------------------- /materialiconlib/src/main/java/net/steamcrafted/materialiconlib/MaterialMenuInflater.java: -------------------------------------------------------------------------------- 1 | package net.steamcrafted.materialiconlib; 2 | 3 | import android.app.Activity; 4 | import android.content.Context; 5 | import android.content.res.ColorStateList; 6 | import android.content.res.TypedArray; 7 | import android.content.res.XmlResourceParser; 8 | import android.graphics.Color; 9 | import android.util.AttributeSet; 10 | import android.util.TypedValue; 11 | import android.util.Xml; 12 | import android.view.InflateException; 13 | import android.view.Menu; 14 | import android.view.MenuInflater; 15 | import android.view.MenuItem; 16 | 17 | import org.xmlpull.v1.XmlPullParser; 18 | import org.xmlpull.v1.XmlPullParserException; 19 | 20 | import java.io.IOException; 21 | import java.util.ArrayList; 22 | import java.util.List; 23 | 24 | public class MaterialMenuInflater { 25 | /** Menu tag name in XML. */ 26 | private static final String XML_MENU = "menu"; 27 | 28 | /** Group tag name in XML. */ 29 | private static final String XML_GROUP = "group"; 30 | 31 | /** Item tag name in XML. */ 32 | private static final String XML_ITEM = "item"; 33 | 34 | private final Context mContext; 35 | private final MenuInflater mInflater; 36 | private int mDefaultColor; 37 | 38 | /** 39 | * Constructs a menu inflater. 40 | * 41 | * @see Activity#getMenuInflater() 42 | */ 43 | private MaterialMenuInflater(Context context, MenuInflater inflater) { 44 | mContext = context; 45 | mInflater = inflater; 46 | mDefaultColor = getDefaultColor(); 47 | } 48 | 49 | public static MaterialMenuInflater with(Context context){ 50 | return new MaterialMenuInflater( 51 | context, 52 | context instanceof Activity ? 53 | ((Activity)context).getMenuInflater() 54 | : new MenuInflater(context) 55 | ); 56 | } 57 | 58 | public static MaterialMenuInflater with(Context context, MenuInflater inflater){ 59 | return new MaterialMenuInflater(context, inflater); 60 | } 61 | 62 | public MaterialMenuInflater setDefaultColor(int color){ 63 | mDefaultColor = color; 64 | return this; 65 | } 66 | 67 | public MaterialMenuInflater setDefaultColorResource(int colorRes){ 68 | mDefaultColor = MaterialIconUtils.getColorResource(mContext, colorRes); 69 | return this; 70 | } 71 | 72 | /** 73 | * Inflate a menu hierarchy from the specified XML resource. Throws 74 | * {@link InflateException} if there is an error. 75 | * 76 | * @param menuRes Resource ID for an XML layout resource to load (e.g., 77 | * R.menu.main_activity)) 78 | * @param menu The Menu to inflate into. The items and submenus will be 79 | * added to this Menu. 80 | */ 81 | public void inflate(int menuRes, Menu menu) { 82 | menu.clear(); 83 | 84 | mInflater.inflate(menuRes, menu); 85 | 86 | afterInflate(menuRes, menu); 87 | } 88 | 89 | private void afterInflate(int menuRes, Menu menu){ 90 | IconData root = new IconData(0, 0, 0); 91 | XmlResourceParser parser = null; 92 | try { 93 | parser = mContext.getResources().getLayout(menuRes); 94 | AttributeSet attrs = Xml.asAttributeSet(parser); 95 | 96 | parseMenu(parser, attrs, root); 97 | } catch (XmlPullParserException e) { 98 | throw new InflateException("Error inflating menu XML", e); 99 | } catch (IOException e) { 100 | throw new InflateException("Error inflating menu XML", e); 101 | } finally { 102 | if (parser != null) parser.close(); 103 | 104 | // populate the menu with the parsed icons 105 | populateIcons(menu, root, mDefaultColor); 106 | } 107 | } 108 | 109 | private int getDefaultColor(){ 110 | TypedValue outValue = new TypedValue(); 111 | mContext.getTheme().resolveAttribute(R.attr.materialIconColor, outValue, true); 112 | 113 | // Colorstatelist/color resource 114 | if(outValue.resourceId != 0 && outValue.type == TypedValue.TYPE_ATTRIBUTE){ 115 | ColorStateList stateList = null; 116 | if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { 117 | stateList = mContext.getResources().getColorStateList(outValue.resourceId, mContext.getTheme()); 118 | }else{ 119 | stateList = mContext.getResources().getColorStateList(outValue.resourceId); 120 | } 121 | if(stateList != null) return stateList.getDefaultColor(); 122 | } 123 | 124 | // Regular inline color int 125 | if(outValue.type <= TypedValue.TYPE_LAST_COLOR_INT && outValue.type >= TypedValue.TYPE_FIRST_COLOR_INT){ 126 | return outValue.data; 127 | } 128 | return Color.BLACK; 129 | } 130 | 131 | private void populateIcons(Menu menu, IconData root, int defaultIconColor) { 132 | for(int i = 0; i < menu.size(); i++){ 133 | MenuItem m = menu.getItem(i); 134 | IconData d = root.children.get(i); 135 | 136 | if(m.hasSubMenu()){ 137 | populateIcons(m.getSubMenu(), d, defaultIconColor); 138 | } 139 | 140 | if(d.itemIconResId >= 0) 141 | m.setIcon( 142 | MaterialDrawableBuilder.with(mContext) 143 | .setIcon(MaterialDrawableBuilder.IconValue.values()[d.itemIconResId]) 144 | .setColor(d.itemColor != -1 ? d.itemColor : defaultIconColor) 145 | .setToActionbarSize() 146 | .build() 147 | ); 148 | } 149 | } 150 | 151 | /** 152 | * Called internally to fill the given menu. If a sub menu is seen, it will 153 | * call this recursively. 154 | */ 155 | private void parseMenu(XmlPullParser parser, AttributeSet attrs, IconData menu) 156 | throws XmlPullParserException, IOException { 157 | MenuState menuState = new MenuState(menu); 158 | 159 | int eventType = parser.getEventType(); 160 | String tagName; 161 | boolean lookingForEndOfUnknownTag = false; 162 | String unknownTagName = null; 163 | 164 | // This loop will skip to the menu start tag 165 | do { 166 | if (eventType == XmlPullParser.START_TAG) { 167 | tagName = parser.getName(); 168 | if (tagName.equals(XML_MENU)) { 169 | // Go to next tag 170 | eventType = parser.next(); 171 | break; 172 | } 173 | 174 | throw new RuntimeException("Expecting menu, got " + tagName); 175 | } 176 | eventType = parser.next(); 177 | } while (eventType != XmlPullParser.END_DOCUMENT); 178 | 179 | boolean reachedEndOfMenu = false; 180 | while (!reachedEndOfMenu) { 181 | switch (eventType) { 182 | case XmlPullParser.START_TAG: 183 | if (lookingForEndOfUnknownTag) { 184 | break; 185 | } 186 | 187 | tagName = parser.getName(); 188 | if (tagName.equals(XML_GROUP)) { 189 | menuState.readGroup(attrs); 190 | } else if (tagName.equals(XML_ITEM)) { 191 | menuState.readItem(attrs); 192 | } else if (tagName.equals(XML_MENU)) { 193 | // A menu start tag denotes a submenu for an item 194 | IconData subMenu = menuState.addSubMenuItem(); 195 | 196 | // Parse the submenu into returned SubMenu 197 | parseMenu(parser, attrs, subMenu); 198 | } else { 199 | lookingForEndOfUnknownTag = true; 200 | unknownTagName = tagName; 201 | } 202 | break; 203 | 204 | case XmlPullParser.END_TAG: 205 | tagName = parser.getName(); 206 | if (lookingForEndOfUnknownTag && tagName.equals(unknownTagName)) { 207 | lookingForEndOfUnknownTag = false; 208 | unknownTagName = null; 209 | } else if (tagName.equals(XML_GROUP)) { 210 | menuState.resetGroup(); 211 | } else if (tagName.equals(XML_ITEM)) { 212 | // Add the item if it hasn't been added (if the item was 213 | // a submenu, it would have been added already) 214 | if (!menuState.hasAddedItem()) { 215 | menuState.addItem(); 216 | } 217 | } else if (tagName.equals(XML_MENU)) { 218 | reachedEndOfMenu = true; 219 | } 220 | break; 221 | 222 | case XmlPullParser.END_DOCUMENT: 223 | throw new RuntimeException("Unexpected end of document"); 224 | } 225 | 226 | eventType = parser.next(); 227 | } 228 | } 229 | 230 | private class IconData { 231 | public int itemIconResId; 232 | public int itemColor; 233 | public int categoryOrder; 234 | public List children = new ArrayList<>(); 235 | 236 | public IconData(int itemIconResId, int itemColor, int categoryOrder) { 237 | this.itemIconResId = itemIconResId; 238 | this.itemColor = itemColor; 239 | this.categoryOrder = categoryOrder; 240 | } 241 | } 242 | 243 | /** 244 | * State for the current menu. 245 | *

246 | * Groups can not be nested unless there is another menu (which will have 247 | * its state class). 248 | */ 249 | private class MenuState { 250 | 251 | /** 252 | * This is the part of an order integer that the user can provide. 253 | * 254 | * @hide 255 | */ 256 | static final int USER_MASK = 0x0000ffff; 257 | /** 258 | * Bit shift of the user portion of the order integer. 259 | * 260 | * @hide 261 | */ 262 | static final int USER_SHIFT = 0; 263 | 264 | /** 265 | * This is the part of an order integer that supplies the category of the item. 266 | * 267 | * @hide 268 | */ 269 | static final int CATEGORY_MASK = 0xffff0000; 270 | /** 271 | * Bit shift of the category portion of the order integer. 272 | * 273 | * @hide 274 | */ 275 | static final int CATEGORY_SHIFT = 16; 276 | 277 | final int[] sCategoryToOrder = new int[]{ 278 | 1, /* No category */ 279 | 4, /* CONTAINER */ 280 | 5, /* SYSTEM */ 281 | 3, /* SECONDARY */ 282 | 2, /* ALTERNATIVE */ 283 | 0, /* SELECTED_ALTERNATIVE */ 284 | }; 285 | 286 | private static final int defaultItemCategory = 0; 287 | private static final int defaultItemOrder = 0; 288 | 289 | 290 | private boolean itemAdded; 291 | private int itemIconResId; 292 | private int itemIconColor; 293 | private int categoryOrder; 294 | private int groupCategory; 295 | private int groupOrder; 296 | 297 | private IconData menu; 298 | 299 | public MenuState(IconData menu) { 300 | this.menu = menu; 301 | 302 | resetGroup(); 303 | } 304 | 305 | public void resetGroup() { 306 | groupCategory = defaultItemCategory; 307 | groupOrder = defaultItemOrder; 308 | } 309 | 310 | /** 311 | * Called when the parser is pointing to a group tag. 312 | */ 313 | public void readGroup(AttributeSet attrs) { 314 | TypedArray a = mContext.obtainStyledAttributes(attrs, 315 | net.steamcrafted.materialiconlib.R.styleable.MaterialMenuGroup); 316 | 317 | groupCategory = a.getInt(net.steamcrafted.materialiconlib.R.styleable.MaterialMenuGroup_android_menuCategory, defaultItemCategory); 318 | groupOrder = a.getInt(net.steamcrafted.materialiconlib.R.styleable.MaterialMenuGroup_android_orderInCategory, defaultItemOrder); 319 | 320 | a.recycle(); 321 | } 322 | 323 | /** 324 | * Called when the parser is pointing to an item tag. 325 | */ 326 | public void readItem(AttributeSet attrs) { 327 | TypedArray a = mContext.getApplicationContext().obtainStyledAttributes(attrs, 328 | net.steamcrafted.materialiconlib.R.styleable.MaterialIconViewFormat); 329 | 330 | // Inherit attributes from the group as default value 331 | itemIconResId = a.getInt(net.steamcrafted.materialiconlib.R.styleable.MaterialIconViewFormat_materialIcon, -1); 332 | itemIconColor = a.getColor(net.steamcrafted.materialiconlib.R.styleable.MaterialIconViewFormat_materialIconColor, -1); 333 | 334 | a.recycle(); 335 | 336 | a = mContext.obtainStyledAttributes(attrs, 337 | net.steamcrafted.materialiconlib.R.styleable.MaterialMenuItem); 338 | 339 | final int category = a.getInt(net.steamcrafted.materialiconlib.R.styleable.MaterialMenuGroup_android_menuCategory, groupCategory); 340 | final int order = a.getInt(net.steamcrafted.materialiconlib.R.styleable.MaterialMenuGroup_android_orderInCategory, groupOrder); 341 | categoryOrder = (category & CATEGORY_MASK) | (order & USER_MASK); 342 | 343 | a.recycle(); 344 | 345 | itemAdded = false; 346 | } 347 | 348 | public IconData addItem() { 349 | itemAdded = true; 350 | 351 | final int ordering = getOrdering(categoryOrder); 352 | 353 | final IconData item = new IconData(itemIconResId, itemIconColor, ordering); 354 | 355 | menu.children.add(findInsertIndex(menu.children, ordering), item); 356 | 357 | return item; 358 | } 359 | 360 | public IconData addSubMenuItem() { 361 | return addItem(); 362 | } 363 | 364 | public boolean hasAddedItem() { 365 | return itemAdded; 366 | } 367 | 368 | /** 369 | * Returns the ordering across all items. This will grab the category from 370 | * the upper bits, find out how to order the category with respect to other 371 | * categories, and combine it with the lower bits. 372 | * 373 | * @param categoryOrder The category order for a particular item (if it has 374 | * not been or/add with a category, the default category is 375 | * assumed). 376 | * @return An ordering integer that can be used to order this item across 377 | * all the items (even from other categories). 378 | */ 379 | private int getOrdering(int categoryOrder) { 380 | final int index = (categoryOrder & CATEGORY_MASK) >> CATEGORY_SHIFT; 381 | 382 | if (index < 0 || index >= sCategoryToOrder.length) { 383 | throw new IllegalArgumentException("order does not contain a valid category."); 384 | } 385 | 386 | return (sCategoryToOrder[index] << CATEGORY_SHIFT) | (categoryOrder & USER_MASK); 387 | } 388 | 389 | 390 | private int findInsertIndex(List items, int ordering) { 391 | for (int i = items.size() - 1; i >= 0; i--) { 392 | IconData item = items.get(i); 393 | if (item.categoryOrder <= ordering) { 394 | return i + 1; 395 | } 396 | } 397 | 398 | return 0; 399 | } 400 | } 401 | } -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app', ':materialiconlib' 2 | --------------------------------------------------------------------------------