├── .travis.yml
├── Design
├── About.jpg
├── Conference List (ListView).png
├── Conference List (Staggered ListView).jpg
├── Register.jpg
├── Schedule.jpg
├── Splash.jpg
├── Sponsors.jpg
├── Talk (Collapsed).jpg
├── Talk.jpg
├── Venue (API level less than 17).jpg
└── Venue.jpg
├── LICENSE
├── README.md
├── conference-xml
├── conference1.xml
├── conference2.xml
├── conference3.xml
├── conference4.xml
├── conference5.xml
├── conference6.xml
├── conference7.xml
└── index.xml
├── source-code
├── .gitignore
├── .idea
│ ├── .name
│ ├── compiler.xml
│ ├── copyright
│ │ └── profiles_settings.xml
│ ├── encodings.xml
│ ├── gradle.xml
│ ├── misc.xml
│ ├── modules.xml
│ ├── runConfigurations.xml
│ └── vcs.xml
├── app
│ ├── .gitignore
│ ├── build.gradle
│ ├── fabric.properties
│ ├── proguard-rules.pro
│ └── src
│ │ ├── androidTest
│ │ └── java
│ │ │ └── org
│ │ │ └── buildmlearn
│ │ │ └── mconference
│ │ │ └── ApplicationTest.java
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── assets
│ │ │ └── sampleXML.xml
│ │ ├── java
│ │ │ └── org
│ │ │ │ └── buildmlearn
│ │ │ │ └── mconference
│ │ │ │ ├── activity
│ │ │ │ ├── BaseActivity.java
│ │ │ │ ├── Conference.java
│ │ │ │ ├── Schedule.java
│ │ │ │ ├── Splash.java
│ │ │ │ └── Talk.java
│ │ │ │ ├── adapters
│ │ │ │ ├── DayRecyclerView.java
│ │ │ │ ├── SponsorRecyclerView.java
│ │ │ │ └── TabAdapter.java
│ │ │ │ ├── conference
│ │ │ │ ├── About.java
│ │ │ │ ├── Register.java
│ │ │ │ ├── Sponsor.java
│ │ │ │ ├── Venue.java
│ │ │ │ └── VenueMapView.java
│ │ │ │ ├── constant
│ │ │ │ └── Constants.java
│ │ │ │ ├── database
│ │ │ │ └── Database.java
│ │ │ │ ├── model
│ │ │ │ ├── SponsorDetails.java
│ │ │ │ └── TalkDetails.java
│ │ │ │ ├── schedule
│ │ │ │ └── DayFragment.java
│ │ │ │ ├── secondapproach
│ │ │ │ ├── ConferenceMeta.java
│ │ │ │ ├── Home.java
│ │ │ │ ├── HomeRecyclerView.java
│ │ │ │ └── IndexParser.java
│ │ │ │ └── util
│ │ │ │ ├── PlayServicesUnavailableDialogFragment.java
│ │ │ │ └── XMLParser.java
│ │ └── res
│ │ │ ├── drawable-hdpi
│ │ │ └── ic_search_white_24dp.png
│ │ │ ├── drawable-mdpi
│ │ │ └── ic_search_white_24dp.png
│ │ │ ├── drawable-xhdpi
│ │ │ └── ic_search_white_24dp.png
│ │ │ ├── drawable-xxhdpi
│ │ │ └── ic_search_white_24dp.png
│ │ │ ├── drawable-xxxhdpi
│ │ │ └── ic_search_white_24dp.png
│ │ │ ├── drawable
│ │ │ ├── ic_ham.png
│ │ │ ├── logo.png
│ │ │ └── placeholder_1.jpg
│ │ │ ├── layout
│ │ │ ├── activity_base.xml
│ │ │ ├── activity_conference.xml
│ │ │ ├── activity_home.xml
│ │ │ ├── activity_schedule.xml
│ │ │ ├── activity_splash.xml
│ │ │ ├── activity_talk.xml
│ │ │ ├── fragment_about.xml
│ │ │ ├── fragment_day.xml
│ │ │ ├── fragment_register.xml
│ │ │ ├── fragment_sponsor.xml
│ │ │ ├── fragment_venue.xml
│ │ │ ├── home_card_view.xml
│ │ │ ├── nav_header.xml
│ │ │ ├── schedule_card_view.xml
│ │ │ ├── sponsor_card_view.xml
│ │ │ └── talk_content_scrolling.xml
│ │ │ ├── menu
│ │ │ ├── home_menu.xml
│ │ │ ├── nav_menu.xml
│ │ │ └── schedule_menu.xml
│ │ │ ├── mipmap-hdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-mdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── values-w820dp
│ │ │ └── dimens.xml
│ │ │ └── values
│ │ │ ├── attrs.xml
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── test
│ │ └── java
│ │ └── org
│ │ └── buildmlearn
│ │ └── mconference
│ │ └── ExampleUnitTest.java
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
└── web page
├── css
├── jquery.timepicker.css
└── materialize.min.css
├── fonts
└── roboto
│ ├── Roboto-Bold.eot
│ ├── Roboto-Bold.ttf
│ ├── Roboto-Bold.woff
│ ├── Roboto-Bold.woff2
│ ├── Roboto-Light.eot
│ ├── Roboto-Light.ttf
│ ├── Roboto-Light.woff
│ ├── Roboto-Light.woff2
│ ├── Roboto-Medium.eot
│ ├── Roboto-Medium.ttf
│ ├── Roboto-Medium.woff
│ ├── Roboto-Medium.woff2
│ ├── Roboto-Regular.eot
│ ├── Roboto-Regular.ttf
│ ├── Roboto-Regular.woff
│ ├── Roboto-Regular.woff2
│ ├── Roboto-Thin.eot
│ ├── Roboto-Thin.ttf
│ ├── Roboto-Thin.woff
│ └── Roboto-Thin.woff2
├── index.html
└── js
├── XMLCreater.js
├── XMLWriter.js
├── custom.js
├── jquery-2.1.1.min.js
├── jquery.timepicker.min.js
└── materialize.min.js
/.travis.yml:
--------------------------------------------------------------------------------
1 | before_install: cd source-code
2 |
3 | language: android
4 |
5 | jdk:
6 | - oraclejdk7
7 |
8 | android:
9 | components:
10 | # Uncomment the lines below if you want to
11 | # use the latest revision of Android SDK Tools
12 | - tools
13 | - platform-tools
14 | - android-23
15 | - build-tools-23.0.2
16 | - extra-android-m2repository
17 | - extra-android-support
18 | - extra-google-m2repository
19 |
20 | script:
21 | - chmod +x ./gradlew
--------------------------------------------------------------------------------
/Design/About.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/Design/About.jpg
--------------------------------------------------------------------------------
/Design/Conference List (ListView).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/Design/Conference List (ListView).png
--------------------------------------------------------------------------------
/Design/Conference List (Staggered ListView).jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/Design/Conference List (Staggered ListView).jpg
--------------------------------------------------------------------------------
/Design/Register.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/Design/Register.jpg
--------------------------------------------------------------------------------
/Design/Schedule.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/Design/Schedule.jpg
--------------------------------------------------------------------------------
/Design/Splash.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/Design/Splash.jpg
--------------------------------------------------------------------------------
/Design/Sponsors.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/Design/Sponsors.jpg
--------------------------------------------------------------------------------
/Design/Talk (Collapsed).jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/Design/Talk (Collapsed).jpg
--------------------------------------------------------------------------------
/Design/Talk.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/Design/Talk.jpg
--------------------------------------------------------------------------------
/Design/Venue (API level less than 17).jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/Design/Venue (API level less than 17).jpg
--------------------------------------------------------------------------------
/Design/Venue.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/Design/Venue.jpg
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2016, BuildmLearn.org
2 | All rights reserved.
3 |
4 | Redistribution and use in source and binary forms, with or without
5 | modification, are permitted provided that the following conditions are met:
6 |
7 | * Redistributions of source code must retain the above copyright notice, this
8 | list of conditions and the following disclaimer.
9 |
10 | * Redistributions in binary form must reproduce the above copyright notice,
11 | this list of conditions and the following disclaimer in the documentation
12 | and/or other materials provided with the distribution.
13 |
14 | * Neither the name of mConference-Framework nor the names of its
15 | contributors may be used to endorse or promote products derived from
16 | this software without specific prior written permission.
17 |
18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | [](https://travis-ci.org/BuildmLearn/mConference-Framework)
2 |
3 | # mConference-Framework
4 | mConference Framework is an Android Framework which allows organizers to create apps for conferences and events. Using this framework, the organizers can create apps for any event, conference or meetup by creating and adding data in the configuration file (XML) from a static webpage.
--------------------------------------------------------------------------------
/conference-xml/conference1.xml:
--------------------------------------------------------------------------------
1 |
2 | Conference #1
3 | http://www.example.com/logo.png
4 | The Centre Point, Jamshedpur
5 |
9 | http://www.example.com/background.jpg
10 | https://cdn-az.allevents.in/banners/9c4e10fe8efaf771cca752ecd1ff0138
11 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
12 | https://www.google.com/forms
13 |
14 | -
15 | Sponsor #1
16 | https://mir-s3-cdn-cf.behance.net/project_modules/disp/3fe6027858667.55e61091bc63d.jpg
17 |
18 | -
19 | Sponsor #2
20 | https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcSJqpA4Kx0817SYkXx4eZKRTOKXBjZOhHIc4mIkevic2qyaqvco
21 |
22 | -
23 | Sponsor #3
24 | https://developers.google.com/open-source/gsoc/images/gsoc2016-sun-373x373.png
25 |
26 |
27 |
28 | -
29 | Talk #1
30 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
31 | 1472704200000
32 | 1472707800000
33 | Albert Hall
34 | http://blogs.gartner.com/smarterwithgartner/files/2015/03/Guy_Kawasaki_1_inline.jpg
35 |
36 | -
37 | Talk #2
38 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
39 | 1472715000000
40 | 1472718600000
41 | Nehru Hall
42 | http://www.example.com/talk2.jpg
43 |
44 | -
45 | Talk #3
46 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
47 | 1472722200000
48 | 1472729400000
49 | Gandhi Hall
50 | http://static.dnaindia.com/sites/default/files/styles/half/public/2016/01/12/413826-swami.jpg
51 |
52 | -
53 | Talk #1
54 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
55 | 1472790600000
56 | 1472794200000
57 | Albert Hall
58 | http://www.example.com/talk2.jpg
59 |
60 | -
61 | Talk #2
62 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
63 | 1472801400000
64 | 1472805000000
65 | Nehru Hall
66 | http://blogs.gartner.com/smarterwithgartner/files/2015/03/Guy_Kawasaki_1_inline.jpg
67 |
68 | -
69 | Talk #3
70 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
71 | 1472808600000
72 | 1472815800000
73 | Gandhi Hall
74 | http://static.dnaindia.com/sites/default/files/styles/half/public/2016/01/12/413826-swami.jpg
75 |
76 | -
77 | Talk #1
78 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
79 | 1472877000000
80 | 1472880600000
81 | Albert Hall
82 | http://static.dnaindia.com/sites/default/files/styles/half/public/2016/01/12/413826-swami.jpg
83 |
84 | -
85 | Talk #2
86 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
87 | 1472887800000
88 | 1472819400000
89 | Nehru Hall
90 | http://www.example.com/talk2.jpg
91 |
92 | -
93 | Talk #3
94 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
95 | 1472895000000
96 | 1472902200000
97 | Gandhi Hall
98 | http://blogs.gartner.com/smarterwithgartner/files/2015/03/Guy_Kawasaki_1_inline.jpg
99 |
100 |
101 |
--------------------------------------------------------------------------------
/conference-xml/conference2.xml:
--------------------------------------------------------------------------------
1 |
2 | Conference #2
3 | http://www.example.com/logo.png
4 | Indian Habitat Centre, Delhi
5 |
9 | http://www.example.com/background.jpg
10 | https://cdn-az.allevents.in/banners/9c4e10fe8efaf771cca752ecd1ff0138
11 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
12 | https://www.google.com/forms
13 |
14 | -
15 | Sponsor #1
16 | https://mir-s3-cdn-cf.behance.net/project_modules/disp/3fe6027858667.55e61091bc63d.jpg
17 |
18 | -
19 | Sponsor #2
20 | https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcSJqpA4Kx0817SYkXx4eZKRTOKXBjZOhHIc4mIkevic2qyaqvco
21 |
22 | -
23 | Sponsor #3
24 | https://developers.google.com/open-source/gsoc/images/gsoc2016-sun-373x373.png
25 |
26 |
27 |
28 | -
29 | Talk #1
30 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
31 | 1472704200000
32 | 1472707800000
33 | Albert Hall
34 | http://blogs.gartner.com/smarterwithgartner/files/2015/03/Guy_Kawasaki_1_inline.jpg
35 |
36 | -
37 | Talk #2
38 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
39 | 1472715000000
40 | 1472718600000
41 | Nehru Hall
42 | http://www.example.com/talk2.jpg
43 |
44 | -
45 | Talk #3
46 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
47 | 1472722200000
48 | 1472729400000
49 | Gandhi Hall
50 | http://static.dnaindia.com/sites/default/files/styles/half/public/2016/01/12/413826-swami.jpg
51 |
52 | -
53 | Talk #1
54 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
55 | 1472790600000
56 | 1472794200000
57 | Albert Hall
58 | http://www.example.com/talk2.jpg
59 |
60 | -
61 | Talk #2
62 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
63 | 1472801400000
64 | 1472805000000
65 | Nehru Hall
66 | http://blogs.gartner.com/smarterwithgartner/files/2015/03/Guy_Kawasaki_1_inline.jpg
67 |
68 | -
69 | Talk #3
70 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
71 | 1472808600000
72 | 1472815800000
73 | Gandhi Hall
74 | http://static.dnaindia.com/sites/default/files/styles/half/public/2016/01/12/413826-swami.jpg
75 |
76 | -
77 | Talk #1
78 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
79 | 1472877000000
80 | 1472880600000
81 | Albert Hall
82 | http://static.dnaindia.com/sites/default/files/styles/half/public/2016/01/12/413826-swami.jpg
83 |
84 | -
85 | Talk #2
86 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
87 | 1472887800000
88 | 1472819400000
89 | Nehru Hall
90 | http://www.example.com/talk2.jpg
91 |
92 | -
93 | Talk #3
94 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
95 | 1472895000000
96 | 1472902200000
97 | Gandhi Hall
98 | http://blogs.gartner.com/smarterwithgartner/files/2015/03/Guy_Kawasaki_1_inline.jpg
99 |
100 |
101 |
--------------------------------------------------------------------------------
/conference-xml/conference3.xml:
--------------------------------------------------------------------------------
1 |
2 | Conference #3
3 | http://www.example.com/logo.png
4 | Blue Diamond, Kolkata
5 |
9 | http://www.example.com/background.jpg
10 | https://cdn-az.allevents.in/banners/9c4e10fe8efaf771cca752ecd1ff0138
11 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
12 | https://www.google.com/forms
13 |
14 | -
15 | Sponsor #1
16 | https://mir-s3-cdn-cf.behance.net/project_modules/disp/3fe6027858667.55e61091bc63d.jpg
17 |
18 | -
19 | Sponsor #2
20 | https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcSJqpA4Kx0817SYkXx4eZKRTOKXBjZOhHIc4mIkevic2qyaqvco
21 |
22 | -
23 | Sponsor #3
24 | https://developers.google.com/open-source/gsoc/images/gsoc2016-sun-373x373.png
25 |
26 |
27 |
28 | -
29 | Talk #1
30 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
31 | 1472704200000
32 | 1472707800000
33 | Albert Hall
34 | http://blogs.gartner.com/smarterwithgartner/files/2015/03/Guy_Kawasaki_1_inline.jpg
35 |
36 | -
37 | Talk #2
38 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
39 | 1472715000000
40 | 1472718600000
41 | Nehru Hall
42 | http://www.example.com/talk2.jpg
43 |
44 | -
45 | Talk #3
46 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
47 | 1472722200000
48 | 1472729400000
49 | Gandhi Hall
50 | http://static.dnaindia.com/sites/default/files/styles/half/public/2016/01/12/413826-swami.jpg
51 |
52 | -
53 | Talk #1
54 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
55 | 1472790600000
56 | 1472794200000
57 | Albert Hall
58 | http://www.example.com/talk2.jpg
59 |
60 | -
61 | Talk #2
62 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
63 | 1472801400000
64 | 1472805000000
65 | Nehru Hall
66 | http://blogs.gartner.com/smarterwithgartner/files/2015/03/Guy_Kawasaki_1_inline.jpg
67 |
68 | -
69 | Talk #3
70 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
71 | 1472808600000
72 | 1472815800000
73 | Gandhi Hall
74 | http://static.dnaindia.com/sites/default/files/styles/half/public/2016/01/12/413826-swami.jpg
75 |
76 | -
77 | Talk #1
78 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
79 | 1472877000000
80 | 1472880600000
81 | Albert Hall
82 | http://static.dnaindia.com/sites/default/files/styles/half/public/2016/01/12/413826-swami.jpg
83 |
84 | -
85 | Talk #2
86 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
87 | 1472887800000
88 | 1472819400000
89 | Nehru Hall
90 | http://www.example.com/talk2.jpg
91 |
92 | -
93 | Talk #3
94 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
95 | 1472895000000
96 | 1472902200000
97 | Gandhi Hall
98 | http://blogs.gartner.com/smarterwithgartner/files/2015/03/Guy_Kawasaki_1_inline.jpg
99 |
100 |
101 |
--------------------------------------------------------------------------------
/conference-xml/conference4.xml:
--------------------------------------------------------------------------------
1 |
2 | Conference Name
3 | http://www.example.com/logo.png
4 | IIM Ahemdabad
5 |
9 | http://www.example.com/background.jpg
10 | https://cdn-az.allevents.in/banners/9c4e10fe8efaf771cca752ecd1ff0138
11 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
12 | https://www.google.com/forms
13 |
14 | -
15 | Sponsor #1
16 | https://mir-s3-cdn-cf.behance.net/project_modules/disp/3fe6027858667.55e61091bc63d.jpg
17 |
18 | -
19 | Sponsor #2
20 | https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcSJqpA4Kx0817SYkXx4eZKRTOKXBjZOhHIc4mIkevic2qyaqvco
21 |
22 | -
23 | Sponsor #3
24 | https://developers.google.com/open-source/gsoc/images/gsoc2016-sun-373x373.png
25 |
26 |
27 |
28 | -
29 | Talk #1
30 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
31 | 1472704200000
32 | 1472707800000
33 | Albert Hall
34 | http://blogs.gartner.com/smarterwithgartner/files/2015/03/Guy_Kawasaki_1_inline.jpg
35 |
36 | -
37 | Talk #2
38 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
39 | 1472715000000
40 | 1472718600000
41 | Nehru Hall
42 | http://www.example.com/talk2.jpg
43 |
44 | -
45 | Talk #3
46 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
47 | 1472722200000
48 | 1472729400000
49 | Gandhi Hall
50 | http://static.dnaindia.com/sites/default/files/styles/half/public/2016/01/12/413826-swami.jpg
51 |
52 | -
53 | Talk #1
54 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
55 | 1472790600000
56 | 1472794200000
57 | Albert Hall
58 | http://www.example.com/talk2.jpg
59 |
60 | -
61 | Talk #2
62 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
63 | 1472801400000
64 | 1472805000000
65 | Nehru Hall
66 | http://blogs.gartner.com/smarterwithgartner/files/2015/03/Guy_Kawasaki_1_inline.jpg
67 |
68 | -
69 | Talk #3
70 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
71 | 1472808600000
72 | 1472815800000
73 | Gandhi Hall
74 | http://static.dnaindia.com/sites/default/files/styles/half/public/2016/01/12/413826-swami.jpg
75 |
76 | -
77 | Talk #1
78 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
79 | 1472877000000
80 | 1472880600000
81 | Albert Hall
82 | http://static.dnaindia.com/sites/default/files/styles/half/public/2016/01/12/413826-swami.jpg
83 |
84 | -
85 | Talk #2
86 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
87 | 1472887800000
88 | 1472819400000
89 | Nehru Hall
90 | http://www.example.com/talk2.jpg
91 |
92 | -
93 | Talk #3
94 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
95 | 1472895000000
96 | 1472902200000
97 | Gandhi Hall
98 | http://blogs.gartner.com/smarterwithgartner/files/2015/03/Guy_Kawasaki_1_inline.jpg
99 |
100 |
101 |
--------------------------------------------------------------------------------
/conference-xml/conference5.xml:
--------------------------------------------------------------------------------
1 |
2 | Conference #5
3 | http://www.example.com/logo.png
4 | BITS Pilani
5 |
9 | http://www.example.com/background.jpg
10 | https://cdn-az.allevents.in/banners/9c4e10fe8efaf771cca752ecd1ff0138
11 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
12 | https://www.google.com/forms
13 |
14 | -
15 | Sponsor #1
16 | https://mir-s3-cdn-cf.behance.net/project_modules/disp/3fe6027858667.55e61091bc63d.jpg
17 |
18 | -
19 | Sponsor #2
20 | https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcSJqpA4Kx0817SYkXx4eZKRTOKXBjZOhHIc4mIkevic2qyaqvco
21 |
22 | -
23 | Sponsor #3
24 | https://developers.google.com/open-source/gsoc/images/gsoc2016-sun-373x373.png
25 |
26 |
27 |
28 | -
29 | Talk #1
30 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
31 | 1472704200000
32 | 1472707800000
33 | Albert Hall
34 | http://blogs.gartner.com/smarterwithgartner/files/2015/03/Guy_Kawasaki_1_inline.jpg
35 |
36 | -
37 | Talk #2
38 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
39 | 1472715000000
40 | 1472718600000
41 | Nehru Hall
42 | http://www.example.com/talk2.jpg
43 |
44 | -
45 | Talk #3
46 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
47 | 1472722200000
48 | 1472729400000
49 | Gandhi Hall
50 | http://static.dnaindia.com/sites/default/files/styles/half/public/2016/01/12/413826-swami.jpg
51 |
52 | -
53 | Talk #1
54 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
55 | 1472790600000
56 | 1472794200000
57 | Albert Hall
58 | http://www.example.com/talk2.jpg
59 |
60 | -
61 | Talk #2
62 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
63 | 1472801400000
64 | 1472805000000
65 | Nehru Hall
66 | http://blogs.gartner.com/smarterwithgartner/files/2015/03/Guy_Kawasaki_1_inline.jpg
67 |
68 | -
69 | Talk #3
70 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
71 | 1472808600000
72 | 1472815800000
73 | Gandhi Hall
74 | http://static.dnaindia.com/sites/default/files/styles/half/public/2016/01/12/413826-swami.jpg
75 |
76 | -
77 | Talk #1
78 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
79 | 1472877000000
80 | 1472880600000
81 | Albert Hall
82 | http://static.dnaindia.com/sites/default/files/styles/half/public/2016/01/12/413826-swami.jpg
83 |
84 | -
85 | Talk #2
86 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
87 | 1472887800000
88 | 1472819400000
89 | Nehru Hall
90 | http://www.example.com/talk2.jpg
91 |
92 | -
93 | Talk #3
94 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
95 | 1472895000000
96 | 1472902200000
97 | Gandhi Hall
98 | http://blogs.gartner.com/smarterwithgartner/files/2015/03/Guy_Kawasaki_1_inline.jpg
99 |
100 |
101 |
--------------------------------------------------------------------------------
/conference-xml/conference6.xml:
--------------------------------------------------------------------------------
1 |
2 | Conference #6
3 | http://www.example.com/logo.png
4 | Hyderabad
5 |
9 | http://www.example.com/background.jpg
10 | https://cdn-az.allevents.in/banners/9c4e10fe8efaf771cca752ecd1ff0138
11 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
12 | https://www.google.com/forms
13 |
14 | -
15 | Sponsor #1
16 | https://mir-s3-cdn-cf.behance.net/project_modules/disp/3fe6027858667.55e61091bc63d.jpg
17 |
18 | -
19 | Sponsor #2
20 | https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcSJqpA4Kx0817SYkXx4eZKRTOKXBjZOhHIc4mIkevic2qyaqvco
21 |
22 | -
23 | Sponsor #3
24 | https://developers.google.com/open-source/gsoc/images/gsoc2016-sun-373x373.png
25 |
26 |
27 |
28 | -
29 | Talk #1
30 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
31 | 1472704200000
32 | 1472707800000
33 | Albert Hall
34 | http://blogs.gartner.com/smarterwithgartner/files/2015/03/Guy_Kawasaki_1_inline.jpg
35 |
36 | -
37 | Talk #2
38 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
39 | 1472715000000
40 | 1472718600000
41 | Nehru Hall
42 | http://www.example.com/talk2.jpg
43 |
44 | -
45 | Talk #3
46 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
47 | 1472722200000
48 | 1472729400000
49 | Gandhi Hall
50 | http://static.dnaindia.com/sites/default/files/styles/half/public/2016/01/12/413826-swami.jpg
51 |
52 | -
53 | Talk #1
54 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
55 | 1472790600000
56 | 1472794200000
57 | Albert Hall
58 | http://www.example.com/talk2.jpg
59 |
60 | -
61 | Talk #2
62 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
63 | 1472801400000
64 | 1472805000000
65 | Nehru Hall
66 | http://blogs.gartner.com/smarterwithgartner/files/2015/03/Guy_Kawasaki_1_inline.jpg
67 |
68 | -
69 | Talk #3
70 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
71 | 1472808600000
72 | 1472815800000
73 | Gandhi Hall
74 | http://static.dnaindia.com/sites/default/files/styles/half/public/2016/01/12/413826-swami.jpg
75 |
76 | -
77 | Talk #1
78 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
79 | 1472877000000
80 | 1472880600000
81 | Albert Hall
82 | http://static.dnaindia.com/sites/default/files/styles/half/public/2016/01/12/413826-swami.jpg
83 |
84 | -
85 | Talk #2
86 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
87 | 1472887800000
88 | 1472819400000
89 | Nehru Hall
90 | http://www.example.com/talk2.jpg
91 |
92 | -
93 | Talk #3
94 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
95 | 1472895000000
96 | 1472902200000
97 | Gandhi Hall
98 | http://blogs.gartner.com/smarterwithgartner/files/2015/03/Guy_Kawasaki_1_inline.jpg
99 |
100 |
101 |
--------------------------------------------------------------------------------
/conference-xml/conference7.xml:
--------------------------------------------------------------------------------
1 |
2 | Conference #7
3 | http://www.example.com/logo.png
4 | Kengiri, Bangalore
5 |
9 | http://www.example.com/background.jpg
10 | https://cdn-az.allevents.in/banners/9c4e10fe8efaf771cca752ecd1ff0138
11 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
12 | https://www.google.com/forms
13 |
14 | -
15 | Sponsor #1
16 | https://mir-s3-cdn-cf.behance.net/project_modules/disp/3fe6027858667.55e61091bc63d.jpg
17 |
18 | -
19 | Sponsor #2
20 | https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcSJqpA4Kx0817SYkXx4eZKRTOKXBjZOhHIc4mIkevic2qyaqvco
21 |
22 | -
23 | Sponsor #3
24 | https://developers.google.com/open-source/gsoc/images/gsoc2016-sun-373x373.png
25 |
26 |
27 |
28 | -
29 | Talk #1
30 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
31 | 1472704200000
32 | 1472707800000
33 | Albert Hall
34 | http://blogs.gartner.com/smarterwithgartner/files/2015/03/Guy_Kawasaki_1_inline.jpg
35 |
36 | -
37 | Talk #2
38 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
39 | 1472715000000
40 | 1472718600000
41 | Nehru Hall
42 | http://www.example.com/talk2.jpg
43 |
44 | -
45 | Talk #3
46 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
47 | 1472722200000
48 | 1472729400000
49 | Gandhi Hall
50 | http://static.dnaindia.com/sites/default/files/styles/half/public/2016/01/12/413826-swami.jpg
51 |
52 | -
53 | Talk #1
54 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
55 | 1472790600000
56 | 1472794200000
57 | Albert Hall
58 | http://www.example.com/talk2.jpg
59 |
60 | -
61 | Talk #2
62 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
63 | 1472801400000
64 | 1472805000000
65 | Nehru Hall
66 | http://blogs.gartner.com/smarterwithgartner/files/2015/03/Guy_Kawasaki_1_inline.jpg
67 |
68 | -
69 | Talk #3
70 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
71 | 1472808600000
72 | 1472815800000
73 | Gandhi Hall
74 | http://static.dnaindia.com/sites/default/files/styles/half/public/2016/01/12/413826-swami.jpg
75 |
76 | -
77 | Talk #1
78 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
79 | 1472877000000
80 | 1472880600000
81 | Albert Hall
82 | http://static.dnaindia.com/sites/default/files/styles/half/public/2016/01/12/413826-swami.jpg
83 |
84 | -
85 | Talk #2
86 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
87 | 1472887800000
88 | 1472819400000
89 | Nehru Hall
90 | http://www.example.com/talk2.jpg
91 |
92 | -
93 | Talk #3
94 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
95 | 1472895000000
96 | 1472902200000
97 | Gandhi Hall
98 | http://blogs.gartner.com/smarterwithgartner/files/2015/03/Guy_Kawasaki_1_inline.jpg
99 |
100 |
101 |
--------------------------------------------------------------------------------
/conference-xml/index.xml:
--------------------------------------------------------------------------------
1 |
2 | Conference #1
3 | 1472668200000
4 | The Centre Point, Jamshedpur
5 | https://c402277.ssl.cf1.rackcdn.com/photos/9031/images/original/WWF_25mm_no_tab.png
6 | https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/2nd-approach/conference-xml/conference1.xml
7 |
8 |
9 | Conference #2
10 | 1472841000000
11 | Indian Habitat Centre, Delhi
12 | http://www.kloover.com/wp-content/uploads/2008/09/detail_google_vertical-225x300.jpg
13 | https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/2nd-approach/conference-xml/conference2.xml
14 |
15 |
16 | Conference #3
17 | 1473273000000
18 | Blue Diamond, Kolkata
19 | https://developers.google.com/open-source/gsoc/images/gsoc2016-sun-373x373.png
20 | https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/2nd-approach/conference-xml/conference3.xml
21 |
22 |
23 | Conference #4
24 | 1473273000000
25 | IIM Ahemdabad
26 | http://blogs-images.forbes.com/georgeanders/files/2013/01/225x30011.jpg
27 | https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/2nd-approach/conference-xml/conference4.xml
28 |
29 |
30 | Conference #5
31 | 1473273000000
32 | BITS Pilani
33 | http://management.ind.in/img/j/MPH-in-BITS-Pilani-1.jpg
34 | https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/2nd-approach/conference-xml/conference5.xml
35 |
36 |
37 | Conference #6
38 | 1473273000000
39 | Hyderabad
40 | http://i1-news.softpedia-static.com/images/news2/Goodbye-openSUSE-11-2-2.jpg
41 | https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/2nd-approach/conference-xml/conference6.xml
42 |
43 |
44 | Conference #7
45 | 1473373000000
46 | Kengiri, Bangalore
47 | https://d18lkz4dllo6v2.cloudfront.net/cumulus_uploads/entry/2014-08-08/Wikipedia%20PIC.png?w=660
48 | https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/2nd-approach/conference-xml/conference7.xml
49 |
--------------------------------------------------------------------------------
/source-code/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/workspace.xml
5 | /.idea/libraries
6 | .DS_Store
7 | /build
8 | /captures
9 |
--------------------------------------------------------------------------------
/source-code/.idea/.name:
--------------------------------------------------------------------------------
1 | source-code
--------------------------------------------------------------------------------
/source-code/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/source-code/.idea/copyright/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/source-code/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/source-code/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
24 |
25 |
--------------------------------------------------------------------------------
/source-code/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/source-code/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/source-code/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/source-code/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/source-code/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/source-code/app/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | repositories {
3 | maven { url 'https://maven.fabric.io/public' }
4 | }
5 |
6 | dependencies {
7 | classpath 'io.fabric.tools:gradle:1.+'
8 | }
9 | }
10 |
11 | repositories {
12 | maven { url 'https://maven.fabric.io/public' }
13 | }
14 |
15 | apply plugin: 'com.android.application'
16 | apply plugin: 'io.fabric'
17 |
18 | android {
19 | compileSdkVersion 23
20 | buildToolsVersion '23.0.2'
21 |
22 | defaultConfig {
23 | applicationId "org.buildmlearn.mconference"
24 | minSdkVersion 15
25 | targetSdkVersion 23
26 | versionCode 1
27 | versionName "1.0"
28 | multiDexEnabled true
29 | }
30 |
31 | dexOptions {
32 | javaMaxHeapSize "4g" //specify the heap size for the dex process
33 | preDexLibraries = false //delete the already predexed libraries
34 | }
35 |
36 | buildTypes {
37 | release {
38 | minifyEnabled false
39 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
40 | }
41 | }
42 | }
43 |
44 | dependencies {
45 | compile fileTree(include: ['*.jar'], dir: 'libs')
46 | testCompile 'junit:junit:4.12'
47 | compile 'com.android.support:appcompat-v7:23.1.1'
48 | compile 'com.android.support:support-v4:23.1.1'
49 | compile 'com.android.support:cardview-v7:23.1.1'
50 | compile 'com.android.support:recyclerview-v7:23.1.1'
51 | compile 'com.android.support:palette-v7:23.1.1'
52 | compile 'com.android.support:design:23.1.1'
53 | compile 'com.google.android.gms:play-services-maps:9.0.1'
54 | compile 'com.google.android.gms:play-services-location:9.0.1'
55 | compile 'com.squareup.picasso:picasso:2.5.2'
56 | compile 'com.android.support:multidex:1.0.1'
57 | compile('com.crashlytics.sdk.android:crashlytics:2.5.7@aar') {
58 | transitive = true;
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/source-code/app/fabric.properties:
--------------------------------------------------------------------------------
1 | #Contains API Secret used to validate your application. Commit to internal source control; avoid making secret public.
2 | #Thu Jun 16 15:38:25 IST 2016
3 | apiSecret=a1381c4fc6306b571c39920523f93fdb82a7974fc6add05a69b22238c7e019f3
4 |
--------------------------------------------------------------------------------
/source-code/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 /home/jai/Android/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 |
--------------------------------------------------------------------------------
/source-code/app/src/androidTest/java/org/buildmlearn/mconference/ApplicationTest.java:
--------------------------------------------------------------------------------
1 | package org.buildmlearn.mconference;
2 |
3 | import android.app.Application;
4 | import android.test.ApplicationTestCase;
5 |
6 | /**
7 | * Testing Fundamentals
8 | */
9 | public class ApplicationTest extends ApplicationTestCase {
10 | public ApplicationTest() {
11 | super(Application.class);
12 | }
13 | }
--------------------------------------------------------------------------------
/source-code/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
16 |
19 |
20 |
25 |
26 |
27 |
28 |
29 |
30 |
33 |
36 |
37 |
41 |
44 |
45 |
48 |
51 |
52 |
53 |
56 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/source-code/app/src/main/assets/sampleXML.xml:
--------------------------------------------------------------------------------
1 |
2 | Conference Name
3 | http://www.example.com/logo.png
4 | Indian Habitat Centre, Delhi
5 |
9 | http://www.example.com/background.jpg
10 | https://cdn-az.allevents.in/banners/9c4e10fe8efaf771cca752ecd1ff0138
11 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
12 | https://www.google.com/forms
13 |
14 | -
15 | Sponsor #1
16 | https://mir-s3-cdn-cf.behance.net/project_modules/disp/3fe6027858667.55e61091bc63d.jpg
17 |
18 | -
19 | Sponsor #2
20 | https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcSJqpA4Kx0817SYkXx4eZKRTOKXBjZOhHIc4mIkevic2qyaqvco
21 |
22 | -
23 | Sponsor #3
24 | https://developers.google.com/open-source/gsoc/images/gsoc2016-sun-373x373.png
25 |
26 |
27 |
28 | -
29 | Talk #1
30 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
31 | 1472704200000
32 | 1472707800000
33 | Albert Hall
34 | http://blogs.gartner.com/smarterwithgartner/files/2015/03/Guy_Kawasaki_1_inline.jpg
35 |
36 | -
37 | Talk #2
38 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
39 | 1472715000000
40 | 1472718600000
41 | Nehru Hall
42 | http://www.example.com/talk2.jpg
43 |
44 | -
45 | Talk #3
46 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
47 | 1472722200000
48 | 1472729400000
49 | Gandhi Hall
50 | http://static.dnaindia.com/sites/default/files/styles/half/public/2016/01/12/413826-swami.jpg
51 |
52 | -
53 | Talk #1
54 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
55 | 1472790600000
56 | 1472794200000
57 | Albert Hall
58 | http://www.example.com/talk2.jpg
59 |
60 | -
61 | Talk #2
62 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
63 | 1472801400000
64 | 1472805000000
65 | Nehru Hall
66 | http://blogs.gartner.com/smarterwithgartner/files/2015/03/Guy_Kawasaki_1_inline.jpg
67 |
68 | -
69 | Talk #3
70 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
71 | 1472808600000
72 | 1472815800000
73 | Gandhi Hall
74 | http://static.dnaindia.com/sites/default/files/styles/half/public/2016/01/12/413826-swami.jpg
75 |
76 | -
77 | Talk #1
78 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
79 | 1472877000000
80 | 1472880600000
81 | Albert Hall
82 | http://static.dnaindia.com/sites/default/files/styles/half/public/2016/01/12/413826-swami.jpg
83 |
84 | -
85 | Talk #2
86 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
87 | 1472887800000
88 | 1472819400000
89 | Nehru Hall
90 | http://www.example.com/talk2.jpg
91 |
92 | -
93 | Talk #3
94 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
95 | 1472895000000
96 | 1472902200000
97 | Gandhi Hall
98 | http://blogs.gartner.com/smarterwithgartner/files/2015/03/Guy_Kawasaki_1_inline.jpg
99 |
100 |
101 |
--------------------------------------------------------------------------------
/source-code/app/src/main/java/org/buildmlearn/mconference/activity/BaseActivity.java:
--------------------------------------------------------------------------------
1 | package org.buildmlearn.mconference.activity;
2 |
3 | import android.app.TaskStackBuilder;
4 | import android.content.Intent;
5 | import android.os.Build;
6 | import android.os.Handler;
7 | import android.support.v4.view.GravityCompat;
8 | import android.content.res.Configuration;
9 | import android.support.design.widget.NavigationView;
10 | import android.support.v4.widget.DrawerLayout;
11 | import android.support.v7.app.ActionBarDrawerToggle;
12 | import android.support.v7.app.AppCompatActivity;
13 | import android.os.Bundle;
14 | import android.support.v7.widget.Toolbar;
15 | import android.view.MenuItem;
16 | import android.view.View;
17 | import android.widget.FrameLayout;
18 | import android.widget.ImageView;
19 |
20 | import com.squareup.picasso.Picasso;
21 |
22 | import org.buildmlearn.mconference.R;
23 |
24 | public class BaseActivity extends AppCompatActivity {
25 |
26 | public DrawerLayout drawerLayout;
27 | public NavigationView navigationView;
28 | public FrameLayout frameLayout;
29 | public Toolbar toolbar;
30 | private ImageView navImage;
31 | private ActionBarDrawerToggle drawerToggle;
32 |
33 | @Override
34 | protected void onCreate(Bundle savedInstanceState) {
35 | super.onCreate(savedInstanceState);
36 | setContentView(R.layout.activity_base);
37 |
38 | drawerLayout = (DrawerLayout) findViewById(R.id.nav_drawer_layout);
39 | navigationView = (NavigationView) findViewById(R.id.nav_view);
40 | frameLayout = (FrameLayout) findViewById(R.id.nav_content_frame);
41 | navImage = (ImageView) navigationView.getHeaderView(0).findViewById(R.id.nav_header_image);
42 | }
43 |
44 | protected void setUpNavDrawer(Toolbar toolbar) {
45 |
46 | Picasso.with(this)
47 | .load(R.drawable.placeholder_1)
48 | .error(R.drawable.placeholder_1)
49 | .fit().centerCrop().into(navImage);
50 |
51 | drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, 0, 0)
52 | {
53 | public void onDrawerOpened(View v) {
54 | super.onDrawerOpened(v);
55 | invalidateOptionsMenu();
56 | }
57 |
58 | public void onDrawerClosed(View v) {
59 | super.onDrawerClosed(v);
60 | invalidateOptionsMenu();
61 | }
62 | };
63 |
64 | drawerToggle.setDrawerIndicatorEnabled(true);
65 | drawerLayout.setDrawerListener(drawerToggle);
66 |
67 | getSupportActionBar().setHomeButtonEnabled(true);
68 | getSupportActionBar().setDisplayHomeAsUpEnabled(true);
69 | getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_ham);
70 |
71 | navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
72 | @Override
73 | public boolean onNavigationItemSelected(final MenuItem item) {
74 |
75 | if (item.getItemId() == getSelfNavDrawerItem()) {
76 | drawerLayout.closeDrawer(GravityCompat.START);
77 | return true;
78 | }
79 |
80 | new Handler().postDelayed(new Runnable() {
81 | @Override
82 | public void run() {
83 | goToNavDrawerItem(item.getItemId());
84 | }
85 | }, 250);
86 |
87 | View mainContent = findViewById(R.id.nav_content_frame);
88 | mainContent.animate().alpha(0).setDuration(150);
89 |
90 | drawerLayout.closeDrawer(GravityCompat.START);
91 |
92 | return true;
93 | }
94 | });
95 | }
96 |
97 | @Override
98 | protected void onPostCreate(Bundle savedInstanceState) {
99 | super.onPostCreate(savedInstanceState);
100 | drawerToggle.syncState();
101 |
102 | View mainContent = findViewById(R.id.nav_content_frame);
103 | mainContent.animate().alpha(1).setDuration(250);
104 | }
105 |
106 | @Override
107 | public void onConfigurationChanged(Configuration newConfig) {
108 | super.onConfigurationChanged(newConfig);
109 | drawerToggle.onConfigurationChanged(newConfig);
110 | }
111 |
112 | @Override
113 | public boolean onOptionsItemSelected(MenuItem item) {
114 | return super.onOptionsItemSelected(item);
115 | }
116 |
117 | @Override
118 | public void onBackPressed() {
119 | if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
120 | drawerLayout.closeDrawer(GravityCompat.START);
121 | } else {
122 | super.onBackPressed();
123 | }
124 | }
125 |
126 | private void goToNavDrawerItem(int item) {
127 | Intent i = null;
128 |
129 | switch (item) {
130 | case R.id.nav_home:
131 | i = new Intent(getBaseContext(), Conference.class);
132 | break;
133 |
134 | case R.id.nav_schedule:
135 | i = new Intent(getBaseContext(), Schedule.class);
136 | break;
137 | }
138 |
139 | if(i != null)
140 | createBackStack(i);
141 | }
142 |
143 | private void createBackStack(Intent intent) {
144 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
145 | TaskStackBuilder builder = TaskStackBuilder.create(this);
146 | builder.addNextIntentWithParentStack(intent);
147 | builder.startActivities();
148 | }
149 | else {
150 | startActivity(intent);
151 | finish();
152 | }
153 | }
154 |
155 | protected int getSelfNavDrawerItem(){
156 | return -1;
157 | }
158 | }
159 |
--------------------------------------------------------------------------------
/source-code/app/src/main/java/org/buildmlearn/mconference/activity/Conference.java:
--------------------------------------------------------------------------------
1 | package org.buildmlearn.mconference.activity;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 | import android.os.AsyncTask;
6 | import android.os.Bundle;
7 | import android.support.design.widget.TabLayout;
8 | import android.support.v4.view.ViewPager;
9 | import android.support.v7.widget.Toolbar;
10 | import android.view.View;
11 | import android.widget.ProgressBar;
12 |
13 | import org.buildmlearn.mconference.R;
14 | import org.buildmlearn.mconference.adapters.TabAdapter;
15 | import org.buildmlearn.mconference.conference.About;
16 | import org.buildmlearn.mconference.conference.Venue;
17 | import org.buildmlearn.mconference.conference.Register;
18 | import org.buildmlearn.mconference.conference.Sponsor;
19 | import org.buildmlearn.mconference.constant.Constants;
20 | import org.buildmlearn.mconference.util.XMLParser;
21 |
22 | import java.io.IOException;
23 | import java.net.URL;
24 |
25 | public class Conference extends BaseActivity implements Constants {
26 |
27 | private ViewPager viewPager;
28 | private TabLayout tabLayout;
29 | private ProgressBar bar;
30 |
31 | @Override
32 | protected void onCreate(Bundle savedInstanceState) {
33 | super.onCreate(savedInstanceState);
34 | getLayoutInflater().inflate(R.layout.activity_conference, frameLayout);
35 |
36 | Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
37 | setSupportActionBar(toolbar);
38 |
39 | super.setUpNavDrawer(toolbar);
40 |
41 | viewPager = (ViewPager) findViewById(R.id.viewpager);
42 | viewPager.setOffscreenPageLimit(3);
43 |
44 | tabLayout = (TabLayout) findViewById(R.id.tabs);
45 |
46 | navigationView.getMenu().getItem(0).setChecked(true);
47 | overridePendingTransition(0,0);
48 |
49 | URL url = null;
50 | if (SECOND_APPROACH) {
51 | Intent i = getIntent();
52 | try {
53 | url = new URL(i.getStringExtra("URL"));
54 | } catch (IOException e) {
55 | e.printStackTrace();
56 | }
57 | }
58 |
59 | bar = (ProgressBar) this.findViewById(R.id.progressBar_conference);
60 |
61 | populateConference task = new populateConference(this);
62 | task.execute(url);
63 | }
64 |
65 | @Override
66 | protected int getSelfNavDrawerItem() {
67 | return R.id.nav_home;
68 | }
69 |
70 | private void setupViewPager(ViewPager viewPager) {
71 | TabAdapter adapter = new TabAdapter(getSupportFragmentManager());
72 | adapter.addFragment(new About(), "About");
73 | adapter.addFragment(new Venue(), "Venue");
74 | adapter.addFragment(new Register(), "Register");
75 | adapter.addFragment(new Sponsor(), "Sponsors");
76 | viewPager.setAdapter(adapter);
77 | }
78 |
79 |
80 | private class populateConference extends AsyncTask {
81 |
82 | private Context mContext;
83 | public populateConference (Context context){
84 | mContext = context;
85 | }
86 |
87 | @Override
88 | protected void onPreExecute(){
89 | bar.setVisibility(View.VISIBLE);
90 | }
91 |
92 | @Override
93 | protected Void doInBackground(URL... urls) {
94 | if (SECOND_APPROACH) {
95 | try {
96 | XMLParser.parse(mContext, urls[0]);
97 | } catch (Exception e) {
98 | e.printStackTrace();
99 | }
100 | }
101 | return null;
102 | }
103 |
104 | @Override
105 | protected void onPostExecute(Void aVoid) {
106 | bar.setVisibility(View.GONE);
107 | setupViewPager(viewPager);
108 | tabLayout.setupWithViewPager(viewPager);
109 | }
110 | }
111 |
112 | @Override
113 | public void onBackPressed() {
114 | if (!SECOND_APPROACH)
115 | System.exit(1);
116 |
117 | super.onBackPressed();
118 | }
119 | }
120 |
--------------------------------------------------------------------------------
/source-code/app/src/main/java/org/buildmlearn/mconference/activity/Schedule.java:
--------------------------------------------------------------------------------
1 | package org.buildmlearn.mconference.activity;
2 |
3 | import android.content.Context;
4 | import android.content.SharedPreferences;
5 | import android.support.design.widget.TabLayout;
6 | import android.support.v4.view.ViewPager;
7 | import android.os.Bundle;
8 | import android.support.v7.widget.Toolbar;
9 |
10 | import org.buildmlearn.mconference.R;
11 | import org.buildmlearn.mconference.adapters.TabAdapter;
12 | import org.buildmlearn.mconference.constant.Constants;
13 | import org.buildmlearn.mconference.schedule.DayFragment;
14 |
15 | public class Schedule extends BaseActivity implements Constants {
16 |
17 | private int noOfDays;
18 | long startTime;
19 | long endTime;
20 |
21 | @Override
22 | protected void onCreate(Bundle savedInstanceState) {
23 | super.onCreate(savedInstanceState);
24 | getLayoutInflater().inflate(R.layout.activity_schedule, frameLayout);
25 |
26 | SharedPreferences sharedPref
27 | = getApplicationContext().getSharedPreferences(PREFERENCES_FILE_NAME, Context.MODE_PRIVATE);
28 | startTime = sharedPref.getLong(START_TAG, 0);
29 | endTime = sharedPref.getLong(END_TAG, 0);
30 |
31 | noOfDays = getNoOfDays(endTime - startTime) + 1;
32 |
33 | Toolbar toolbar = (Toolbar) findViewById(R.id.schedule_toolbar);
34 | setSupportActionBar(toolbar);
35 |
36 | super.setUpNavDrawer(toolbar);
37 |
38 | ViewPager viewPager = (ViewPager) findViewById(R.id.schedule_viewpager);
39 | setupViewPager(viewPager);
40 |
41 | TabLayout tabLayout = (TabLayout) findViewById(R.id.schedule_tabs);
42 | tabLayout.setupWithViewPager(viewPager);
43 |
44 | navigationView.getMenu().getItem(1).setChecked(true);
45 | overridePendingTransition(0,0);
46 | }
47 |
48 | @Override
49 | protected int getSelfNavDrawerItem() {
50 | return R.id.nav_schedule;
51 | }
52 |
53 | private void setupViewPager(ViewPager viewPager) {
54 | TabAdapter adapter = new TabAdapter(getSupportFragmentManager());
55 |
56 | for(int i=1; i<=noOfDays; i++)
57 | adapter.addFragment(newDayFragmentInstance(i), "Day " + i);
58 | viewPager.setAdapter(adapter);
59 | }
60 |
61 | private int getNoOfDays(long milli) {
62 | return (int)(milli / milliInOneDay);
63 | }
64 |
65 | private DayFragment newDayFragmentInstance(int day){
66 | DayFragment dayFragment = new DayFragment();
67 | Bundle args = new Bundle();
68 | long startDayMilli = startTime + (day - 1) * milliInOneDay;
69 | args.putLong(DAY_KEY, startDayMilli);
70 | dayFragment.setArguments(args);
71 |
72 | return dayFragment;
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/source-code/app/src/main/java/org/buildmlearn/mconference/activity/Splash.java:
--------------------------------------------------------------------------------
1 | package org.buildmlearn.mconference.activity;
2 |
3 | import android.app.Activity;
4 | import android.content.Context;
5 | import android.content.Intent;
6 | import android.content.SharedPreferences;
7 | import android.os.Bundle;
8 | import android.os.Handler;
9 |
10 | import com.crashlytics.android.Crashlytics;
11 |
12 | import io.fabric.sdk.android.Fabric;
13 |
14 | import org.buildmlearn.mconference.R;
15 | import org.buildmlearn.mconference.constant.Constants;
16 | import org.buildmlearn.mconference.secondapproach.Home;
17 | import org.buildmlearn.mconference.util.XMLParser;
18 |
19 | public class Splash extends Activity implements Constants {
20 |
21 | @Override
22 | protected void onCreate(Bundle savedInstanceState) {
23 | super.onCreate(savedInstanceState);
24 | Fabric.with(this, new Crashlytics());
25 | setContentView(R.layout.activity_splash);
26 |
27 | final SharedPreferences sharedPref
28 | = getApplicationContext().getSharedPreferences(PREFERENCES_FILE_NAME, Context.MODE_PRIVATE);
29 |
30 | new Handler().postDelayed(new Runnable() {
31 |
32 | @Override
33 | public void run() {
34 | Intent i;
35 | if (SECOND_APPROACH)
36 | i = new Intent(Splash.this, Home.class);
37 |
38 | else
39 | i = new Intent(Splash.this, Conference.class);
40 |
41 | startActivity(i);
42 | finish();
43 | }
44 | }, SPLASH_TIME_OUT);
45 |
46 | if (!SECOND_APPROACH) {
47 | new Thread(new Runnable() {
48 | @Override
49 | public void run() {
50 | try {
51 | if (!sharedPref.getBoolean(PARSING_COMPLETE, false))
52 | XMLParser.parse(getApplicationContext(), null);
53 | } catch (Exception e) {
54 | e.printStackTrace();
55 | }
56 | }
57 | }).start();
58 | }
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/source-code/app/src/main/java/org/buildmlearn/mconference/activity/Talk.java:
--------------------------------------------------------------------------------
1 | package org.buildmlearn.mconference.activity;
2 |
3 | import android.content.Intent;
4 | import android.graphics.Bitmap;
5 | import android.graphics.PorterDuff;
6 | import android.graphics.drawable.BitmapDrawable;
7 | import android.graphics.drawable.Drawable;
8 | import android.net.Uri;
9 | import android.provider.CalendarContract;
10 | import android.support.design.widget.CollapsingToolbarLayout;
11 | import android.support.design.widget.FloatingActionButton;
12 | import android.support.v4.content.ContextCompat;
13 | import android.support.v7.app.AppCompatActivity;
14 | import android.os.Bundle;
15 | import android.support.v7.graphics.Palette;
16 | import android.support.v7.widget.Toolbar;
17 | import android.util.Log;
18 | import android.view.View;
19 | import android.widget.ImageView;
20 | import android.widget.TextView;
21 |
22 | import com.squareup.picasso.Picasso;
23 |
24 | import org.buildmlearn.mconference.R;
25 | import org.buildmlearn.mconference.model.TalkDetails;
26 |
27 | import java.text.SimpleDateFormat;
28 |
29 | public class Talk extends AppCompatActivity {
30 |
31 | private CollapsingToolbarLayout collapsingToolbarLayout;
32 |
33 | @Override
34 | protected void onCreate(Bundle savedInstanceState) {
35 | super.onCreate(savedInstanceState);
36 | setContentView(R.layout.activity_talk);
37 |
38 | Toolbar toolbar = (Toolbar) findViewById(R.id.talk_toolbar);
39 | setSupportActionBar(toolbar);
40 | getSupportActionBar().setDisplayHomeAsUpEnabled(true);
41 |
42 | final TalkDetails talkDetails = (TalkDetails)getIntent().getSerializableExtra("TalkDetails");
43 | final Drawable upArrow = ContextCompat.getDrawable(this, R.drawable.abc_ic_ab_back_mtrl_am_alpha);
44 | upArrow.setColorFilter(ContextCompat.getColor(this, android.R.color.white), PorterDuff.Mode.SRC_ATOP);
45 | getSupportActionBar().setDisplayShowTitleEnabled(true);
46 | getSupportActionBar().setHomeAsUpIndicator(upArrow);
47 |
48 | collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.talk_toolbar_layout);
49 | collapsingToolbarLayout.setTitle(talkDetails.getName());
50 | collapsingToolbarLayout.setExpandedTitleColor(ContextCompat.getColor(this, android.R.color.white));
51 | collapsingToolbarLayout.setCollapsedTitleTextColor(ContextCompat.getColor(this, android.R.color.white));
52 |
53 | final ImageView talkImage = (ImageView) findViewById(R.id.talk_collapsible_image);
54 | TextView talkTime = (TextView) findViewById(R.id.talk_time_detail);
55 | TextView talkLocation = (TextView) findViewById(R.id.talk_venue_detail);
56 | TextView talkDesc = (TextView) findViewById(R.id.talk_desc_detail);
57 |
58 | SimpleDateFormat dateFormat = new SimpleDateFormat("hh:mm a");
59 | String talkTimeText = dateFormat.format(talkDetails.getStartTime())
60 | + " - " + dateFormat.format(talkDetails.getEndTime());
61 | talkTime.setText(talkTimeText);
62 |
63 | talkLocation.setText(talkDetails.getLocation());
64 | talkDesc.setText(talkDetails.getDesc());
65 |
66 | Picasso.with(this)
67 | .load(Uri.parse(talkDetails.getImageURL()))
68 | .error(R.drawable.placeholder_1)
69 | .fit().centerCrop().into(talkImage, new com.squareup.picasso.Callback() {
70 | @Override
71 | public void onSuccess() {
72 | applyPalette(talkImage);
73 | }
74 |
75 | @Override
76 | public void onError() {
77 | Log.d("Talk.java", "Error caused by Picasso");
78 | applyPalette(talkImage);
79 | }
80 | });
81 |
82 | FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.talk_reminder);
83 | fab.setOnClickListener(new View.OnClickListener() {
84 | @Override
85 | public void onClick(View v) {
86 | Intent intent = new Intent(Intent.ACTION_EDIT);
87 | intent.setType("vnd.android.cursor.item/event");
88 | intent.putExtra(CalendarContract.Events.TITLE,
89 | talkDetails.getName());
90 | intent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME,
91 | talkDetails.getStartTime().getTime());
92 | intent.putExtra(CalendarContract.Events.EVENT_LOCATION,
93 | talkDetails.getLocation());
94 | intent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME,
95 | talkDetails.getEndTime().getTime());
96 | intent.putExtra(CalendarContract.Events.ALL_DAY, false);
97 | intent.putExtra(CalendarContract.Events.DESCRIPTION,
98 | talkDetails.getShortDesc());
99 | v.getContext().startActivity(intent);
100 | }
101 | });
102 | }
103 |
104 | private void applyPalette(ImageView img) {
105 |
106 | Bitmap bitmap = ((BitmapDrawable) img.getDrawable()).getBitmap();
107 | Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() {
108 | @Override
109 | public void onGenerated(Palette palette) {
110 |
111 | int primary = ContextCompat.getColor(getBaseContext(), R.color.colorPrimary);
112 | int primaryDark = ContextCompat.getColor(getBaseContext(), R.color.colorPrimaryDark);
113 |
114 | collapsingToolbarLayout.setContentScrimColor(palette.getMutedColor(primary));
115 | collapsingToolbarLayout.setStatusBarScrimColor(palette.getMutedColor(primaryDark));
116 | }
117 | });
118 | }
119 | }
120 |
--------------------------------------------------------------------------------
/source-code/app/src/main/java/org/buildmlearn/mconference/adapters/DayRecyclerView.java:
--------------------------------------------------------------------------------
1 | package org.buildmlearn.mconference.adapters;
2 |
3 | import android.content.Intent;
4 | import android.net.Uri;
5 | import android.provider.CalendarContract;
6 | import android.support.v7.widget.RecyclerView;
7 | import android.view.LayoutInflater;
8 | import android.view.View;
9 | import android.view.ViewGroup;
10 | import android.widget.Button;
11 | import android.widget.ImageView;
12 | import android.widget.TextView;
13 |
14 | import com.squareup.picasso.Picasso;
15 |
16 | import org.buildmlearn.mconference.R;
17 | import org.buildmlearn.mconference.activity.Talk;
18 | import org.buildmlearn.mconference.model.TalkDetails;
19 |
20 | import java.text.SimpleDateFormat;
21 | import java.util.ArrayList;
22 |
23 | /**
24 | * Created by jai on 4/6/16.
25 | */
26 | public class DayRecyclerView extends RecyclerView.Adapter {
27 |
28 | private ArrayList talks;
29 |
30 | public static class TalkDetailsObject extends RecyclerView.ViewHolder {
31 |
32 | public TextView talkName;
33 | public ImageView talkImage;
34 | public TextView talkTime;
35 | public TextView talkLocation;
36 | public TextView talkShortDesc;
37 | public Button reminder;
38 | public Button readMore;
39 |
40 | public TalkDetailsObject(View view) {
41 | super(view);
42 | talkName = (TextView) view.findViewById(R.id.talk_name);
43 | talkImage= (ImageView) view.findViewById(R.id.talk_image);
44 | talkTime = (TextView) view.findViewById(R.id.talk_time);
45 | talkLocation = (TextView) view.findViewById(R.id.talk_location);
46 | talkShortDesc = (TextView) view.findViewById(R.id.talk_desc_short);
47 | reminder = (Button) view.findViewById(R.id.reminder);
48 | readMore = (Button) view.findViewById(R.id.read_more);
49 | }
50 | }
51 |
52 | public DayRecyclerView(ArrayList talks) {
53 | this.talks = talks;
54 | }
55 |
56 | @Override
57 | public TalkDetailsObject onCreateViewHolder(ViewGroup parent, int viewType) {
58 | View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.schedule_card_view, parent, false);
59 |
60 | TalkDetailsObject talkDetailsObject = new TalkDetailsObject(view);
61 | return talkDetailsObject;
62 | }
63 |
64 | @Override
65 | public void onBindViewHolder(final TalkDetailsObject holder, final int position) {
66 | Picasso.with(holder.talkImage.getContext())
67 | .load(Uri.parse(talks.get(position).getImageURL()))
68 | .error(R.drawable.placeholder_1)
69 | .fit().centerCrop().into(holder.talkImage);
70 | holder.talkName.setText(talks.get(position).getName());
71 |
72 | SimpleDateFormat dateFormat = new SimpleDateFormat("hh:mm a");
73 | String talkTimeText = dateFormat.format(talks.get(position).getStartTime())
74 | + " - " + dateFormat.format(talks.get(position).getEndTime());
75 | holder.talkTime.setText(talkTimeText);
76 |
77 | holder.talkLocation.setText(talks.get(position).getLocation());
78 | holder.talkShortDesc.setText(talks.get(position).getShortDesc());
79 |
80 | holder.reminder.setOnClickListener(new View.OnClickListener() {
81 | @Override
82 | public void onClick(View v) {
83 | Intent intent = new Intent(Intent.ACTION_EDIT);
84 | intent.setType("vnd.android.cursor.item/event");
85 | intent.putExtra(CalendarContract.Events.TITLE,
86 | talks.get(position).getName());
87 | intent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME,
88 | talks.get(position).getStartTime().getTime());
89 | intent.putExtra(CalendarContract.Events.EVENT_LOCATION,
90 | talks.get(position).getLocation());
91 | intent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME,
92 | talks.get(position).getEndTime().getTime());
93 | intent.putExtra(CalendarContract.Events.ALL_DAY, false);
94 | intent.putExtra(CalendarContract.Events.DESCRIPTION,
95 | talks.get(position).getShortDesc());
96 | v.getContext().startActivity(intent);
97 | }
98 | });
99 |
100 | holder.readMore.setOnClickListener(new View.OnClickListener() {
101 | @Override
102 | public void onClick(View v) {
103 | Intent i = new Intent(v.getContext(), Talk.class);
104 | i.putExtra("TalkDetails", talks.get(position));
105 | v.getContext().startActivity(i);
106 | }
107 | });
108 | }
109 |
110 | @Override
111 | public int getItemCount() {
112 | return talks.size();
113 | }
114 |
115 | public void setFilter(ArrayList talksList) {
116 | talks = new ArrayList<>();
117 | talks.addAll(talksList);
118 | notifyDataSetChanged();
119 | }
120 | }
121 |
--------------------------------------------------------------------------------
/source-code/app/src/main/java/org/buildmlearn/mconference/adapters/SponsorRecyclerView.java:
--------------------------------------------------------------------------------
1 | package org.buildmlearn.mconference.adapters;
2 |
3 | import android.net.Uri;
4 | import android.support.v7.widget.RecyclerView;
5 | import android.view.LayoutInflater;
6 | import android.view.View;
7 | import android.view.ViewGroup;
8 | import android.widget.ImageView;
9 | import android.widget.TextView;
10 |
11 | import com.squareup.picasso.Picasso;
12 |
13 | import org.buildmlearn.mconference.R;
14 | import org.buildmlearn.mconference.model.SponsorDetails;
15 |
16 | import java.util.ArrayList;
17 |
18 | /**
19 | * Created by jai on 3/6/16.
20 | */
21 | public class SponsorRecyclerView extends RecyclerView.Adapter {
22 |
23 | private ArrayList sponsors;
24 |
25 | public static class SponsorDetailsObject extends RecyclerView.ViewHolder {
26 | public TextView sponsorName;
27 | public ImageView sponsorImage;
28 |
29 | public SponsorDetailsObject(View view) {
30 | super(view);
31 | sponsorName = (TextView) view.findViewById(R.id.sponsor_name);
32 | sponsorImage = (ImageView) view.findViewById(R.id.sponsor_img);
33 | }
34 | }
35 |
36 | public SponsorRecyclerView(ArrayList sponsors) {
37 | this.sponsors = sponsors;
38 | }
39 |
40 | @Override
41 | public SponsorDetailsObject onCreateViewHolder(ViewGroup parent, int viewType) {
42 | View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.sponsor_card_view, parent, false);
43 |
44 | SponsorDetailsObject sponsorDetailsObject = new SponsorDetailsObject(view);
45 | return sponsorDetailsObject;
46 | }
47 |
48 | @Override
49 | public void onBindViewHolder(SponsorDetailsObject holder, int position) {
50 | holder.sponsorName.setText(sponsors.get(position).getName());
51 | Picasso.with(holder.sponsorImage.getContext())
52 | .load(Uri.parse(sponsors.get(position).getLogoURL()))
53 | .fit().centerInside().into(holder.sponsorImage);
54 | }
55 |
56 | @Override
57 | public int getItemCount() {
58 | return sponsors.size();
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/source-code/app/src/main/java/org/buildmlearn/mconference/adapters/TabAdapter.java:
--------------------------------------------------------------------------------
1 | package org.buildmlearn.mconference.adapters;
2 |
3 | import android.support.v4.app.Fragment;
4 | import android.support.v4.app.FragmentManager;
5 | import android.support.v4.app.FragmentPagerAdapter;
6 |
7 | import java.util.ArrayList;
8 | import java.util.List;
9 |
10 | /**
11 | * Created by jai on 31/5/16.
12 | */
13 | public class TabAdapter extends FragmentPagerAdapter {
14 | private final List mFragmentList = new ArrayList<>();
15 | private final List mFragmentTitleList = new ArrayList<>();
16 |
17 | public TabAdapter(FragmentManager manager) {
18 | super(manager);
19 | }
20 |
21 | @Override
22 | public Fragment getItem(int position) {
23 | return mFragmentList.get(position);
24 | }
25 |
26 | @Override
27 | public int getCount() {
28 | return mFragmentList.size();
29 | }
30 |
31 | public void addFragment(Fragment fragment, String title) {
32 | mFragmentList.add(fragment);
33 | mFragmentTitleList.add(title);
34 | }
35 |
36 | @Override
37 | public CharSequence getPageTitle(int position) {
38 | return mFragmentTitleList.get(position);
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/source-code/app/src/main/java/org/buildmlearn/mconference/conference/About.java:
--------------------------------------------------------------------------------
1 | package org.buildmlearn.mconference.conference;
2 |
3 | import android.content.Context;
4 | import android.content.SharedPreferences;
5 | import android.net.Uri;
6 | import android.os.Bundle;
7 | import android.support.v4.app.Fragment;
8 | import android.view.LayoutInflater;
9 | import android.view.View;
10 | import android.view.ViewGroup;
11 | import android.widget.ImageView;
12 | import android.widget.TextView;
13 |
14 | import com.squareup.picasso.Picasso;
15 |
16 | import org.buildmlearn.mconference.R;
17 | import org.buildmlearn.mconference.constant.Constants;
18 |
19 | public class About extends Fragment implements Constants {
20 |
21 | @Override
22 | public View onCreateView(LayoutInflater inflater, ViewGroup container,
23 | Bundle savedInstanceState) {
24 |
25 | // Inflate the layout for this fragment
26 | View view = inflater.inflate(R.layout.fragment_about, container, false);
27 |
28 | SharedPreferences sharedPref
29 | = getActivity().getApplicationContext().getSharedPreferences(PREFERENCES_FILE_NAME, Context.MODE_PRIVATE);
30 |
31 | TextView name = (TextView) view.findViewById(R.id.conference_name);
32 | ImageView aboutImg = (ImageView) view.findViewById(R.id.about_image);
33 | TextView desc = (TextView) view.findViewById(R.id.conference_desc);
34 |
35 | String conferenceName = sharedPref.getString(NAME_TAG, null);
36 | String aboutImgURL = sharedPref.getString(ABOUTBG_TAG, null);
37 | String conferenceDesc = sharedPref.getString(DETAILS_TAG, null);
38 |
39 | getActivity().setTitle(conferenceName);
40 |
41 | name.setText(conferenceName);
42 | Picasso.with(view.getContext())
43 | .load(Uri.parse(aboutImgURL))
44 | .placeholder(R.drawable.placeholder_1)
45 | .error(R.drawable.placeholder_1)
46 | .fit().centerCrop().into(aboutImg);
47 | desc.setText(conferenceDesc);
48 |
49 | return view;
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/source-code/app/src/main/java/org/buildmlearn/mconference/conference/Register.java:
--------------------------------------------------------------------------------
1 | package org.buildmlearn.mconference.conference;
2 |
3 | import android.content.Context;
4 | import android.content.SharedPreferences;
5 | import android.graphics.Bitmap;
6 | import android.os.Bundle;
7 | import android.support.v4.app.Fragment;
8 | import android.view.LayoutInflater;
9 | import android.view.View;
10 | import android.view.ViewGroup;
11 | import android.webkit.WebView;
12 | import android.widget.ProgressBar;
13 |
14 | import org.buildmlearn.mconference.R;
15 | import org.buildmlearn.mconference.constant.Constants;
16 |
17 | public class Register extends Fragment implements Constants {
18 |
19 | private ProgressBar pbar;
20 |
21 | @Override
22 | public View onCreateView(LayoutInflater inflater, ViewGroup container,
23 | Bundle savedInstanceState) {
24 | super.onCreate(savedInstanceState);
25 | View view = inflater.inflate(R.layout.fragment_register, container, false);
26 |
27 | SharedPreferences sharedPref
28 | = getActivity().getApplicationContext().getSharedPreferences(PREFERENCES_FILE_NAME, Context.MODE_PRIVATE);
29 |
30 | WebView webview = (WebView)view.findViewById(R.id.web);
31 | pbar = (ProgressBar)view.findViewById(R.id.loading);
32 | pbar.setVisibility(View.GONE);
33 | webview.setWebViewClient(new WebViewClient());
34 | webview.getSettings().setJavaScriptEnabled(true);
35 |
36 | String registerURL = sharedPref.getString(REGLINK_TAG, null);
37 | webview.loadUrl(registerURL);
38 |
39 | return view;
40 | }
41 |
42 | public class WebViewClient extends android.webkit.WebViewClient
43 | {
44 | @Override
45 | public void onPageStarted(WebView view, String url, Bitmap favicon) {
46 | super.onPageStarted(view, url, favicon);
47 | pbar.setVisibility(View.VISIBLE);
48 | pbar.setProgress(0);
49 | }
50 |
51 | @Override
52 | public boolean shouldOverrideUrlLoading(WebView view, String url) {
53 | view.loadUrl(url);
54 | return true;
55 | }
56 | @Override
57 | public void onPageFinished(WebView view, String url) {
58 | super.onPageFinished(view, url);
59 | pbar.setVisibility(View.GONE);
60 | pbar.setProgress(100);
61 | }
62 |
63 | }
64 |
65 | }
66 |
--------------------------------------------------------------------------------
/source-code/app/src/main/java/org/buildmlearn/mconference/conference/Sponsor.java:
--------------------------------------------------------------------------------
1 | package org.buildmlearn.mconference.conference;
2 |
3 | import android.os.Bundle;
4 | import android.support.v4.app.Fragment;
5 | import android.support.v7.widget.LinearLayoutManager;
6 | import android.support.v7.widget.RecyclerView;
7 | import android.view.LayoutInflater;
8 | import android.view.View;
9 | import android.view.ViewGroup;
10 |
11 | import org.buildmlearn.mconference.R;
12 | import org.buildmlearn.mconference.adapters.SponsorRecyclerView;
13 | import org.buildmlearn.mconference.constant.Constants;
14 | import org.buildmlearn.mconference.database.Database;
15 | import org.buildmlearn.mconference.model.SponsorDetails;
16 |
17 | import java.util.ArrayList;
18 |
19 | public class Sponsor extends Fragment implements Constants {
20 |
21 | @Override
22 | public View onCreateView(LayoutInflater inflater, ViewGroup container,
23 | Bundle savedInstanceState) {
24 | // Inflate the layout for this fragment
25 | View view = inflater.inflate(R.layout.fragment_sponsor, container, false);
26 |
27 | // boolean webPageprovided = false;
28 |
29 | RecyclerView sponsorRecyclerView = (RecyclerView) view.findViewById(R.id.sponsor_recycler_view);
30 | sponsorRecyclerView.setHasFixedSize(true);
31 | sponsorRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
32 |
33 | Database db = new Database(view.getContext());
34 | ArrayList sponsors = db.getSponsors();
35 |
36 | SponsorRecyclerView sponsorAdapter = new SponsorRecyclerView(sponsors);
37 | sponsorRecyclerView.setAdapter(sponsorAdapter);
38 |
39 | return view;
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/source-code/app/src/main/java/org/buildmlearn/mconference/conference/Venue.java:
--------------------------------------------------------------------------------
1 | package org.buildmlearn.mconference.conference;
2 |
3 | import android.app.DialogFragment;
4 | import android.content.Context;
5 | import android.content.SharedPreferences;
6 | import android.location.Address;
7 | import android.location.Geocoder;
8 | import android.os.AsyncTask;
9 | import android.os.Bundle;
10 | import android.support.v4.app.Fragment;
11 | import android.view.LayoutInflater;
12 | import android.view.View;
13 | import android.view.ViewGroup;
14 | import android.widget.ScrollView;
15 | import android.widget.TextView;
16 |
17 | import com.google.android.gms.common.ConnectionResult;
18 | import com.google.android.gms.common.GooglePlayServicesUtil;
19 | import com.google.android.gms.maps.CameraUpdateFactory;
20 | import com.google.android.gms.maps.GoogleMap;
21 | import com.google.android.gms.maps.MapsInitializer;
22 | import com.google.android.gms.maps.model.BitmapDescriptorFactory;
23 | import com.google.android.gms.maps.model.CameraPosition;
24 | import com.google.android.gms.maps.model.LatLng;
25 | import com.google.android.gms.maps.model.MarkerOptions;
26 |
27 | import org.buildmlearn.mconference.R;
28 | import org.buildmlearn.mconference.constant.Constants;
29 | import org.buildmlearn.mconference.util.PlayServicesUnavailableDialogFragment;
30 |
31 | import java.io.IOException;
32 | import java.util.Locale;
33 |
34 | public class Venue extends Fragment implements Constants {
35 |
36 | private VenueMapView mMapView;
37 | GoogleMap googleMap;
38 | ScrollView scrollView;
39 | SharedPreferences sharedPref;
40 | String venueAddress;
41 | int status;
42 |
43 | @Override
44 | public View onCreateView(LayoutInflater inflater, ViewGroup container,
45 | Bundle savedInstanceState) {
46 |
47 | View v = inflater.inflate(R.layout.fragment_venue, container,
48 | false);
49 | MapsInitializer.initialize(getActivity().getApplicationContext());
50 | scrollView = (ScrollView) v.findViewById(R.id.venue_scrollview);
51 | mMapView = (VenueMapView) v.findViewById(R.id.mapView);
52 | TextView address = (TextView) v.findViewById(R.id.venue_detail);
53 |
54 | sharedPref = getActivity().getApplicationContext()
55 | .getSharedPreferences(PREFERENCES_FILE_NAME, Context.MODE_PRIVATE);
56 | venueAddress = sharedPref.getString(VENUE_TAG, null);
57 | address.setText(venueAddress);
58 | mMapView.onCreate(savedInstanceState);
59 |
60 | mMapView.onResume();// needed to get the map to display immediately
61 |
62 | status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getActivity().getApplicationContext());
63 |
64 | googleMap = mMapView.getMap();
65 |
66 | new MapPlotting().execute();
67 |
68 | return v;
69 | }
70 |
71 | @Override
72 | public void onResume() {
73 | super.onResume();
74 | mMapView.onResume();
75 | }
76 |
77 | @Override
78 | public void onPause() {
79 | super.onPause();
80 | mMapView.onPause();
81 | }
82 |
83 | @Override
84 | public void onDestroy() {
85 | super.onDestroy();
86 | mMapView.onDestroy();
87 | }
88 |
89 | @Override
90 | public void onLowMemory() {
91 | super.onLowMemory();
92 | mMapView.onLowMemory();
93 | }
94 |
95 | private class MapPlotting extends AsyncTask {
96 |
97 | double latitude, longitude;
98 |
99 | @Override
100 | protected Void doInBackground(Void... params) {
101 | latitude = Double.longBitsToDouble(sharedPref.getLong(LAT, 0));
102 | longitude = Double.longBitsToDouble(sharedPref.getLong(LONG, 0));
103 |
104 | Address returnedAddress;
105 |
106 | if (latitude == 0 && longitude == 0 || SECOND_APPROACH) {
107 | returnedAddress = getAddressFromLocation(getContext(), venueAddress);
108 | SharedPreferences.Editor editor = sharedPref.edit();
109 |
110 | if (returnedAddress != null) {
111 | editor.putLong(LAT, Double.doubleToLongBits(returnedAddress.getLatitude()));
112 | editor.putLong(LONG, Double.doubleToLongBits(returnedAddress.getLongitude()));
113 | editor.apply();
114 |
115 | latitude = returnedAddress.getLatitude();
116 | longitude = returnedAddress.getLongitude();
117 | }
118 | }
119 | return null;
120 | }
121 |
122 | @Override
123 | protected void onPostExecute(Void aVoid) {
124 | if (status == ConnectionResult.SUCCESS) {
125 | // create marker
126 | MarkerOptions marker = new MarkerOptions().position(
127 | new LatLng(latitude, longitude)).title(venueAddress);
128 |
129 | // Changing marker icon
130 | marker.icon(BitmapDescriptorFactory
131 | .defaultMarker(BitmapDescriptorFactory.HUE_ROSE));
132 |
133 | // adding marker
134 | googleMap.addMarker(marker);
135 | CameraPosition cameraPosition = new CameraPosition.Builder()
136 | .target(new LatLng(latitude, longitude)).zoom(12).build();
137 | googleMap.animateCamera(CameraUpdateFactory
138 | .newCameraPosition(cameraPosition));
139 | } else {
140 | DialogFragment dialogFragment = new PlayServicesUnavailableDialogFragment();
141 | dialogFragment.show(getActivity().getFragmentManager(), "Play Service Problem");
142 | }
143 | }
144 |
145 | private Address getAddressFromLocation (Context context, String locationAddress) {
146 | Address address = null;
147 | Geocoder geocoder = new Geocoder(context, Locale.getDefault());
148 | try {
149 | address = geocoder.getFromLocationName(locationAddress, 1).get(0);
150 | } catch (IOException e) {
151 | e.printStackTrace();
152 | }
153 |
154 | return address;
155 | }
156 | }
157 | }
--------------------------------------------------------------------------------
/source-code/app/src/main/java/org/buildmlearn/mconference/conference/VenueMapView.java:
--------------------------------------------------------------------------------
1 | package org.buildmlearn.mconference.conference;
2 |
3 | import android.content.Context;
4 | import android.util.AttributeSet;
5 | import android.view.MotionEvent;
6 |
7 | import com.google.android.gms.maps.MapView;
8 |
9 | /**
10 | * Created by jai on 22/6/16.
11 | */
12 |
13 | public class VenueMapView extends MapView {
14 |
15 | public VenueMapView(Context context) {
16 | super(context);
17 | }
18 |
19 | public VenueMapView(Context context, AttributeSet attributeSet) {
20 | super(context, attributeSet);
21 | }
22 |
23 | public VenueMapView(Context context, AttributeSet attributeSet, int i) {
24 | super(context, attributeSet, i);
25 | }
26 |
27 | @Override
28 | public boolean dispatchTouchEvent(MotionEvent ev) {
29 | switch (ev.getAction()){
30 | case MotionEvent.ACTION_DOWN:
31 | this.getParent().requestDisallowInterceptTouchEvent(true);
32 | break;
33 |
34 | case MotionEvent.ACTION_UP:
35 | this.getParent().requestDisallowInterceptTouchEvent(false);
36 | break;
37 | }
38 |
39 | super.dispatchTouchEvent(ev);
40 | return true;
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/source-code/app/src/main/java/org/buildmlearn/mconference/constant/Constants.java:
--------------------------------------------------------------------------------
1 | package org.buildmlearn.mconference.constant;
2 |
3 | /**
4 | * Created by jai on 18/6/16.
5 | */
6 | public interface Constants {
7 |
8 | boolean SECOND_APPROACH = true; //false for 1st approach
9 |
10 | int SPLASH_TIME_OUT = 3000;
11 |
12 | String PREFERENCES_FILE_NAME = "PREFS";
13 |
14 | String PARSING_COMPLETE = "parsing complete";
15 |
16 | long milliInOneDay = 86400000l;
17 |
18 | String INDEX_FILE_URL = "https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/2nd-approach/conference-xml/index.xml";
19 |
20 | String DAY_KEY = "day";
21 |
22 | String NAME_TAG = "name";
23 | String LOGO_TAG = "logo";
24 | String VENUE_TAG = "venue";
25 | String TIME_TAG = "time";
26 | String START_TAG = "start";
27 | String END_TAG = "end";
28 | String SPLASHBG_TAG = "splashbg";
29 | String TYPE_ATTR = "type";
30 | String ABOUTBG_TAG = "aboutbg";
31 | String DETAILS_TAG = "details";
32 | String REGLINK_TAG = "reglink";
33 | String SPONSORS_TAG = "sponsors";
34 | String ITEM_TAG = "item";
35 | String DESC_TAG = "desc";
36 | String IMAGE_TAG = "image";
37 | String TALKS_TAG = "talks";
38 | String CONFERENCE_TAG = "conference";
39 | String CONFIG_URL_TAG = "config";
40 |
41 | String TYPE_ATTR_INDIV = "individual";
42 |
43 | //Constants for local Database
44 |
45 | int DATABASE_VERSION = 1;
46 | String DATABASE_NAME = "mConference.db";
47 | String TABLE_SPONSORS = "sponsors";
48 | String TABLE_TALKS = "talks";
49 |
50 | String COLUMN_NAME = "name";
51 | String COLUMN_LOCATION = "location";
52 | String COLUMN_START = "start";
53 | String COLUMN_END = "end";
54 | String COLUMN_DESC = "desc";
55 | String COLUMN_URL = "url";
56 | String COLUMN_FAVORITE = "favorite";
57 |
58 | String CREATE_TALKS_TABLE = "CREATE TABLE IF NOT EXISTS " +
59 | TABLE_TALKS + "("
60 | + COLUMN_NAME + " TEXT, " + COLUMN_URL + " TEXT, "
61 | + COLUMN_START + " DATETIME, " + COLUMN_END + " DATETIME, "
62 | + COLUMN_LOCATION + " TEXT, " + COLUMN_FAVORITE + " INTEGER, "
63 | + COLUMN_DESC + " TEXT)";
64 |
65 | String CREATE_SPONSORS_TABLE = "CREATE TABLE IF NOT EXISTS " +
66 | TABLE_SPONSORS + "("
67 | + COLUMN_NAME + " TEXT, " + COLUMN_URL + " TEXT)";
68 |
69 | String GET_SPONSORS_QUERY = "SELECT * FROM " + TABLE_SPONSORS;
70 | String GET_TALKS_QUERY = "SELECT * FROM " + TABLE_TALKS + " WHERE " + COLUMN_START + " BETWEEN ";
71 | String GET_FAV_TALKS_QUERY = "SELECT * FROM " + TABLE_TALKS + " WHERE " + COLUMN_FAVORITE + "=1";
72 |
73 | String LAT = "latitude";
74 | String LONG = "lomgitude";
75 |
76 | }
77 |
--------------------------------------------------------------------------------
/source-code/app/src/main/java/org/buildmlearn/mconference/database/Database.java:
--------------------------------------------------------------------------------
1 | package org.buildmlearn.mconference.database;
2 |
3 | import android.content.ContentValues;
4 | import android.content.Context;
5 | import android.database.Cursor;
6 | import android.database.sqlite.SQLiteDatabase;
7 | import android.database.sqlite.SQLiteOpenHelper;
8 |
9 | import org.buildmlearn.mconference.constant.Constants;
10 | import org.buildmlearn.mconference.model.SponsorDetails;
11 | import org.buildmlearn.mconference.model.TalkDetails;
12 |
13 | import java.util.ArrayList;
14 | import java.util.Date;
15 |
16 | /**
17 | * Created by jai on 19/6/16.
18 | */
19 | public class Database extends SQLiteOpenHelper implements Constants {
20 |
21 | public Database(Context context) {
22 | super(context, DATABASE_NAME, null, DATABASE_VERSION);
23 | }
24 |
25 | @Override
26 | public void onCreate(SQLiteDatabase db) {
27 | db.execSQL(CREATE_TALKS_TABLE);
28 | db.execSQL(CREATE_SPONSORS_TABLE);
29 | }
30 |
31 | @Override
32 | public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
33 | db.execSQL("DROP TABLE IF EXISTS " + TABLE_TALKS);
34 | db.execSQL("DROP TABLE IF EXISTS " + TABLE_SPONSORS);
35 | onCreate(db);
36 | }
37 |
38 | public void addSponsor(ArrayList sponsors) {
39 | SQLiteDatabase db = this.getWritableDatabase();
40 |
41 | for (SponsorDetails sponsor : sponsors) {
42 | ContentValues values = new ContentValues();
43 | values.put(COLUMN_NAME, sponsor.getName());
44 | values.put(COLUMN_URL, sponsor.getLogoURL());
45 | db.insert(TABLE_SPONSORS, null, values);
46 | }
47 |
48 | db.close();
49 | }
50 |
51 | public void addTalks(ArrayList talks) {
52 | SQLiteDatabase db = this.getWritableDatabase();
53 |
54 | for (TalkDetails talk : talks) {
55 | ContentValues values = new ContentValues();
56 | values.put(COLUMN_NAME, talk.getName());
57 | values.put(COLUMN_URL, talk.getImageURL());
58 | values.put(COLUMN_START, talk.getStartTime().getTime());
59 | values.put(COLUMN_END, talk.getEndTime().getTime());
60 | values.put(COLUMN_LOCATION, talk.getLocation());
61 | values.put(COLUMN_DESC, talk.getDesc());
62 |
63 | db.insert(TABLE_TALKS, null, values);
64 | }
65 |
66 | db.close();
67 | }
68 |
69 | public ArrayList getSponsors() {
70 | SQLiteDatabase db = this.getReadableDatabase();
71 | ArrayList sponsors = new ArrayList<>();
72 |
73 | Cursor cursor = db.rawQuery(GET_SPONSORS_QUERY, null);
74 |
75 | if (cursor.moveToFirst()) {
76 | do {
77 | SponsorDetails result = new SponsorDetails();
78 | result.setName(cursor.getString(cursor.getColumnIndex(COLUMN_NAME)));
79 | result.setLogoURL(cursor.getString(cursor.getColumnIndex(COLUMN_URL)));
80 |
81 | sponsors.add(result);
82 | } while (cursor.moveToNext());
83 | }
84 |
85 | cursor.close();
86 | db.close();
87 | return sponsors;
88 | }
89 |
90 | public ArrayList getTalks(long startDayMilli){
91 | SQLiteDatabase db = this.getReadableDatabase();
92 | ArrayList talks = new ArrayList<>();
93 | long endDayMilli = startDayMilli + milliInOneDay;
94 |
95 | Cursor cursor = db.rawQuery(GET_TALKS_QUERY + startDayMilli + " AND " + endDayMilli, null);
96 |
97 | if (cursor.moveToFirst()) {
98 | do {
99 | TalkDetails result = new TalkDetails();
100 | result.setName(cursor.getString(cursor.getColumnIndex(COLUMN_NAME)));
101 | result.setImageURL(cursor.getString(cursor.getColumnIndex(COLUMN_URL)));
102 | result.setLocation(cursor.getString(cursor.getColumnIndex(COLUMN_LOCATION)));
103 | result.setStartTime(new Date(cursor.getLong(cursor.getColumnIndex(COLUMN_START))));
104 | result.setEndTime(new Date(cursor.getLong(cursor.getColumnIndex(COLUMN_END))));
105 | result.setDesc(cursor.getString(cursor.getColumnIndex(COLUMN_DESC)));
106 |
107 | talks.add(result);
108 | } while (cursor.moveToNext());
109 | }
110 |
111 | cursor.close();
112 | db.close();
113 | return talks;
114 | }
115 |
116 | public ArrayList getFavTalks(){
117 | SQLiteDatabase db = this.getReadableDatabase();
118 | ArrayList talks = new ArrayList<>();
119 |
120 | Cursor cursor = db.rawQuery(GET_FAV_TALKS_QUERY, null);
121 |
122 | if (cursor.moveToFirst()) {
123 | do {
124 | TalkDetails result = new TalkDetails();
125 | result.setName(cursor.getString(cursor.getColumnIndex(COLUMN_NAME)));
126 | result.setImageURL(cursor.getString(cursor.getColumnIndex(COLUMN_URL)));
127 | result.setLocation(cursor.getString(cursor.getColumnIndex(COLUMN_LOCATION)));
128 | result.setStartTime(new Date(cursor.getLong(cursor.getColumnIndex(COLUMN_START))));
129 | result.setEndTime(new Date(cursor.getLong(cursor.getColumnIndex(COLUMN_END))));
130 | result.setDesc(cursor.getString(cursor.getColumnIndex(COLUMN_DESC)));
131 |
132 | talks.add(result);
133 | } while (cursor.moveToNext());
134 | }
135 |
136 | cursor.close();
137 | db.close();
138 | return talks;
139 | }
140 | }
141 |
--------------------------------------------------------------------------------
/source-code/app/src/main/java/org/buildmlearn/mconference/model/SponsorDetails.java:
--------------------------------------------------------------------------------
1 | package org.buildmlearn.mconference.model;
2 |
3 | /**
4 | * Created by jai on 2/6/16.
5 | */
6 | public class SponsorDetails {
7 | private String name;
8 | private String logoURL;
9 |
10 | public SponsorDetails() {
11 | this.name = null;
12 | this.logoURL = null;
13 | }
14 |
15 | public SponsorDetails(String name, String logoURL) {
16 | this.name = name;
17 | this.logoURL = logoURL;
18 | }
19 |
20 | public String getName() {
21 | return name;
22 | }
23 |
24 | public String getLogoURL() {
25 | return logoURL;
26 | }
27 |
28 | public void setName(String name) {
29 | this.name = name;
30 | }
31 |
32 | public void setLogoURL(String logoURL) {
33 | this.logoURL = logoURL;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/source-code/app/src/main/java/org/buildmlearn/mconference/model/TalkDetails.java:
--------------------------------------------------------------------------------
1 | package org.buildmlearn.mconference.model;
2 |
3 | import java.io.Serializable;
4 | import java.util.Date;
5 |
6 | /**
7 | * Created by jai on 4/6/16.
8 | */
9 | public class TalkDetails implements Serializable{
10 | private String name;
11 | private String imageURL;
12 | private Date startTime;
13 | private Date endTime;
14 | private String location;
15 | private String desc;
16 | private String shortDesc;
17 | private boolean isFavroite;
18 |
19 | public TalkDetails () {
20 | this.name = null;
21 | this.imageURL = null;
22 | this.startTime = null;
23 | this.endTime = null;
24 | this.location = null;
25 | this.desc = null;
26 | this.shortDesc = null;
27 | this.isFavroite = false;
28 | }
29 |
30 | public TalkDetails(String name, String imageURL, Date startTime, Date endTime, String location, String desc) {
31 | this.name = name;
32 | this.imageURL = imageURL;
33 | this.startTime = startTime;
34 | this.endTime = endTime;
35 | this.location = location;
36 | this.desc = desc;
37 | this.isFavroite = false;
38 | setShortDesc();
39 | }
40 |
41 | public String getName() {
42 | return name;
43 | }
44 |
45 | public String getImageURL() {
46 | return imageURL;
47 | }
48 |
49 | public void setImageURL(String imageURL) {
50 | this.imageURL = imageURL;
51 | }
52 |
53 | public void setName(String name) {
54 | this.name = name;
55 | }
56 |
57 | public Date getStartTime() {
58 | return startTime;
59 | }
60 |
61 | public void setStartTime(Date startTime) {
62 | this.startTime = startTime;
63 | }
64 |
65 | public Date getEndTime() {
66 | return endTime;
67 | }
68 |
69 | public void setEndTime(Date endTime) {
70 | this.endTime = endTime;
71 | }
72 |
73 | public String getLocation() {
74 | return location;
75 | }
76 |
77 | public void setLocation(String location) {
78 | this.location = location;
79 | }
80 |
81 | public String getDesc() {
82 | return desc;
83 | }
84 |
85 | public void setDesc(String desc) {
86 | this.desc = desc;
87 | setShortDesc();
88 | }
89 |
90 | public boolean isFavroite() {
91 | return isFavroite;
92 | }
93 |
94 | public void setBookmarked(boolean favroite) {
95 | isFavroite = favroite;
96 | }
97 |
98 | public String getShortDesc() {
99 | return shortDesc;
100 | }
101 |
102 | public void setShortDesc() {
103 | String[] splitDesc = desc.split(" ", 7);
104 | shortDesc = "";
105 |
106 | for (int i=0; i<6 && i talks;
30 | private DayRecyclerView dayAdapter;
31 | RecyclerView dayRecyclerView;
32 | long startDayMilli;
33 |
34 | @Override
35 | public View onCreateView(LayoutInflater inflater, ViewGroup container,
36 | Bundle savedInstanceState) {
37 |
38 | setHasOptionsMenu(true);
39 | // Inflate the layout for this fragment
40 | final View view = inflater.inflate(R.layout.fragment_day, container, false);
41 | dayRecyclerView = (RecyclerView) view.findViewById(R.id.day_recycler_view);
42 | dayRecyclerView.setHasFixedSize(true);
43 | dayRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
44 |
45 | Bundle args = this.getArguments();
46 | startDayMilli = args.getLong(DAY_KEY);
47 |
48 | new populateFragment().execute(view.getContext());
49 | return view;
50 | }
51 |
52 | @Override
53 | public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
54 | inflater.inflate(R.menu.schedule_menu, menu);
55 |
56 | MenuItem item = menu.findItem(R.id.schedule_search);
57 | SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
58 | searchView.setOnQueryTextListener(this);
59 |
60 |
61 | MenuItemCompat.setOnActionExpandListener(item, new MenuItemCompat.OnActionExpandListener() {
62 | @Override
63 | public boolean onMenuItemActionExpand(MenuItem item) {
64 | return true;
65 | }
66 |
67 | @Override
68 | public boolean onMenuItemActionCollapse(MenuItem item) {
69 | dayAdapter.setFilter(talks);
70 | return true;
71 | }
72 | });
73 | }
74 |
75 | @Override
76 | public boolean onQueryTextChange(String query) {
77 | ArrayList filterList = filter(talks, query.toLowerCase());
78 | dayAdapter.setFilter(filterList);
79 | return true;
80 | }
81 |
82 | @Override
83 | public boolean onQueryTextSubmit(String query) {
84 | return false;
85 | }
86 |
87 | private ArrayList filter(ArrayList talks, String query) {
88 |
89 | ArrayList filteredList = new ArrayList<>();
90 | for (TalkDetails talkDetails:talks) {
91 | String name = talkDetails.getName().toLowerCase();
92 | String location = talkDetails.getLocation().toLowerCase();
93 | String desc = talkDetails.getDesc().toLowerCase();
94 |
95 | if (name.contains(query) || location.contains(query) || desc.contains(query))
96 | filteredList.add(talkDetails);
97 | }
98 |
99 | return filteredList;
100 | }
101 |
102 | private class populateFragment extends AsyncTask {
103 |
104 | protected Void doInBackground(Context... contexts) {
105 | Database db = new Database(contexts[0]);
106 | talks = db.getTalks(startDayMilli);
107 | return null;
108 | }
109 |
110 | @Override
111 |
112 | protected void onPostExecute(Void aVoid) {
113 | dayAdapter = new DayRecyclerView(talks);
114 | dayRecyclerView.setAdapter(dayAdapter);
115 | }
116 | }
117 | }
118 |
--------------------------------------------------------------------------------
/source-code/app/src/main/java/org/buildmlearn/mconference/secondapproach/ConferenceMeta.java:
--------------------------------------------------------------------------------
1 | package org.buildmlearn.mconference.secondapproach;
2 |
3 | import java.util.Date;
4 |
5 | /**
6 | * Created by jai on 16/7/16.
7 | */
8 |
9 | public class ConferenceMeta {
10 | private String name;
11 | private Date date;
12 | private String venue;
13 | private String logoURL;
14 | private String configURL;
15 | private boolean isFavroite;
16 |
17 | public ConferenceMeta() {
18 | this.name = null;
19 | this.date = null;
20 | this.venue = null;
21 | this.logoURL = null;
22 | this.configURL = null;
23 | this.isFavroite = false;
24 | }
25 |
26 | public String getName() {
27 | return name;
28 | }
29 |
30 | public void setName(String name) {
31 | this.name = name;
32 | }
33 |
34 | public Date getDate() {
35 | return date;
36 | }
37 |
38 | public void setDate(Date date) {
39 | this.date = date;
40 | }
41 |
42 | public String getVenue() {
43 | return venue;
44 | }
45 |
46 | public void setVenue(String venue) {
47 | this.venue = venue;
48 | }
49 |
50 | public String getLogoURL() {
51 | return logoURL;
52 | }
53 |
54 | public void setLogoURL(String logoURL) {
55 | this.logoURL = logoURL;
56 | }
57 |
58 | public String getConfigURL() {
59 | return configURL;
60 | }
61 |
62 | public void setConfigURL(String configURL) {
63 | this.configURL = configURL;
64 | }
65 |
66 | public boolean isFavroite() {
67 | return isFavroite;
68 | }
69 |
70 | public void setFavroite(boolean favroite) {
71 | isFavroite = favroite;
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/source-code/app/src/main/java/org/buildmlearn/mconference/secondapproach/Home.java:
--------------------------------------------------------------------------------
1 | package org.buildmlearn.mconference.secondapproach;
2 |
3 | import android.os.AsyncTask;
4 | import android.support.v4.view.MenuItemCompat;
5 | import android.support.v7.app.AppCompatActivity;
6 | import android.os.Bundle;
7 | import android.support.v7.widget.RecyclerView;
8 | import android.support.v7.widget.SearchView;
9 | import android.support.v7.widget.StaggeredGridLayoutManager;
10 | import android.support.v7.widget.Toolbar;
11 | import android.view.Menu;
12 | import android.view.MenuInflater;
13 | import android.view.MenuItem;
14 | import android.view.View;
15 | import android.widget.ProgressBar;
16 |
17 | import org.buildmlearn.mconference.R;
18 | import org.buildmlearn.mconference.constant.Constants;
19 |
20 | import java.util.ArrayList;
21 |
22 | public class Home extends AppCompatActivity implements SearchView.OnQueryTextListener, Constants{
23 |
24 | private ArrayList conferences;
25 | private HomeRecyclerView homeAdapter;
26 | RecyclerView homeRecyclerView;
27 | private ProgressBar bar;
28 |
29 | @Override
30 | protected void onCreate(Bundle savedInstanceState) {
31 | super.onCreate(savedInstanceState);
32 | setContentView(R.layout.activity_home);
33 |
34 | Toolbar toolbar = (Toolbar) findViewById(R.id.home_toolbar);
35 | setSupportActionBar(toolbar);
36 |
37 | bar = (ProgressBar) this.findViewById(R.id.progressBar_home);
38 |
39 | new populateActivity().execute();
40 | }
41 |
42 | @Override
43 | public boolean onCreateOptionsMenu(Menu menu) {
44 | MenuInflater inflater = getMenuInflater();
45 | inflater.inflate(R.menu.schedule_menu, menu);
46 |
47 | MenuItem item = menu.findItem(R.id.schedule_search);
48 | SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
49 | searchView.setOnQueryTextListener(this);
50 |
51 | MenuItemCompat.setOnActionExpandListener(item, new MenuItemCompat.OnActionExpandListener() {
52 | @Override
53 | public boolean onMenuItemActionExpand(MenuItem item) {
54 | return true;
55 | }
56 |
57 | @Override
58 | public boolean onMenuItemActionCollapse(MenuItem item) {
59 | homeAdapter.setFilter(conferences);
60 | return true;
61 | }
62 | });
63 |
64 | return true;
65 | }
66 |
67 | @Override
68 | public boolean onQueryTextChange(String query) {
69 | ArrayList filterList = filter(conferences, query.toLowerCase());
70 | homeAdapter.setFilter(filterList);
71 | return true;
72 | }
73 |
74 | @Override
75 | public boolean onQueryTextSubmit(String query) {
76 | return false;
77 | }
78 |
79 | private ArrayList filter(ArrayList conferences, String query) {
80 |
81 | ArrayList filteredList = new ArrayList<>();
82 | for (ConferenceMeta conferenceMeta:conferences) {
83 | String name = conferenceMeta.getName().toLowerCase();
84 | String location = conferenceMeta.getVenue().toLowerCase();
85 |
86 | if (name.contains(query) || location.contains(query))
87 | filteredList.add(conferenceMeta);
88 | }
89 |
90 | return filteredList;
91 | }
92 |
93 | private class populateActivity extends AsyncTask {
94 |
95 | @Override
96 | protected void onPreExecute(){
97 | bar.setVisibility(View.VISIBLE);
98 | }
99 |
100 | @Override
101 | protected Void doInBackground(Void... voids) {
102 | try {
103 | conferences = IndexParser.parseIndex();
104 | } catch (Exception e) {
105 | e.printStackTrace();
106 | }
107 | return null;
108 | }
109 |
110 | @Override
111 | protected void onPostExecute(Void aVoid) {
112 | bar.setVisibility(View.GONE);
113 | homeRecyclerView = (RecyclerView) findViewById(R.id.home_recycler_view);
114 | homeRecyclerView.setHasFixedSize(true);
115 | homeRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2,1));
116 | homeAdapter = new HomeRecyclerView(conferences);
117 | homeRecyclerView.setAdapter(homeAdapter);
118 | }
119 | }
120 | }
121 |
--------------------------------------------------------------------------------
/source-code/app/src/main/java/org/buildmlearn/mconference/secondapproach/HomeRecyclerView.java:
--------------------------------------------------------------------------------
1 | package org.buildmlearn.mconference.secondapproach;
2 |
3 | import android.content.Intent;
4 | import android.net.Uri;
5 | import android.support.v7.widget.CardView;
6 | import android.support.v7.widget.RecyclerView;
7 | import android.util.Log;
8 | import android.view.LayoutInflater;
9 | import android.view.View;
10 | import android.view.ViewGroup;
11 | import android.widget.ImageView;
12 | import android.widget.TextView;
13 |
14 | import com.squareup.picasso.Picasso;
15 |
16 | import org.buildmlearn.mconference.R;
17 | import org.buildmlearn.mconference.activity.Conference;
18 |
19 | import java.text.SimpleDateFormat;
20 | import java.util.ArrayList;
21 |
22 | /**
23 | * Created by jai on 16/7/16.
24 | */
25 |
26 | public class HomeRecyclerView extends RecyclerView.Adapter {
27 | private ArrayList conferences;
28 |
29 | public static class ConferenceMetaObject extends RecyclerView.ViewHolder {
30 | public CardView conferenceCardView;
31 | public ImageView conferenceImage;
32 | public TextView conferenceName;
33 | public TextView conferenceDate;
34 | public TextView conferenceVenue;
35 |
36 | public ConferenceMetaObject(View view) {
37 | super(view);
38 | conferenceCardView = (CardView) view.findViewById(R.id.home_card_view);
39 | conferenceImage = (ImageView) view.findViewById(R.id.conference_card_img);
40 | conferenceName = (TextView) view.findViewById(R.id.conference_card_name);
41 | conferenceDate = (TextView) view.findViewById(R.id.conference_card_date);
42 | conferenceVenue = (TextView) view.findViewById(R.id.conference_card_venue);
43 | }
44 | }
45 |
46 | public HomeRecyclerView(ArrayList conferences) {
47 | this.conferences = conferences;
48 | }
49 |
50 | @Override
51 | public ConferenceMetaObject onCreateViewHolder(ViewGroup parent, int viewType) {
52 | View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.home_card_view, parent, false);
53 |
54 | ConferenceMetaObject conferenceMetaObject = new ConferenceMetaObject(view);
55 | return conferenceMetaObject;
56 | }
57 |
58 | @Override
59 | public void onBindViewHolder(ConferenceMetaObject holder, final int position) {
60 | Log.d("URL", conferences.get(position).getLogoURL());
61 | Picasso.with(holder.conferenceImage.getContext())
62 | .load(Uri.parse(conferences.get(position).getLogoURL()))
63 | .error(R.drawable.placeholder_1)
64 | .into(holder.conferenceImage);
65 | holder.conferenceName.setText(conferences.get(position).getName());
66 |
67 | SimpleDateFormat dateFormat = new SimpleDateFormat("d MMM''yy");
68 | String conferenceDateText = dateFormat.format(conferences.get(position).getDate());
69 | holder.conferenceDate.setText(conferenceDateText);
70 |
71 | holder.conferenceVenue.setText(conferences.get(position).getVenue());
72 |
73 | holder.conferenceCardView.setOnClickListener(new View.OnClickListener() {
74 | @Override
75 | public void onClick(View v) {
76 | Intent i = new Intent(v.getContext(), Conference.class);
77 | i.putExtra("URL", conferences.get(position).getConfigURL());
78 | v.getContext().startActivity(i);
79 | }
80 | });
81 |
82 | }
83 |
84 | @Override
85 | public int getItemCount() {
86 | return conferences.size();
87 | }
88 |
89 | public void setFilter(ArrayList confList) {
90 | conferences = new ArrayList<>();
91 | conferences.addAll(confList);
92 | notifyDataSetChanged();
93 | }
94 | }
--------------------------------------------------------------------------------
/source-code/app/src/main/java/org/buildmlearn/mconference/secondapproach/IndexParser.java:
--------------------------------------------------------------------------------
1 | package org.buildmlearn.mconference.secondapproach;
2 |
3 | import android.util.Log;
4 |
5 | import org.buildmlearn.mconference.constant.Constants;
6 | import org.xmlpull.v1.XmlPullParser;
7 | import org.xmlpull.v1.XmlPullParserException;
8 | import org.xmlpull.v1.XmlPullParserFactory;
9 |
10 | import java.io.BufferedInputStream;
11 | import java.io.IOException;
12 | import java.io.InputStream;
13 | import java.net.HttpURLConnection;
14 | import java.net.URL;
15 | import java.util.ArrayList;
16 | import java.util.Date;
17 |
18 | /**
19 | * Created by jai on 20/7/16.
20 | */
21 |
22 | public class IndexParser implements Constants{
23 | static XmlPullParserFactory pullParserFactory;
24 | static ArrayList conferences;
25 |
26 | public static ArrayList parseIndex() throws XmlPullParserException, IOException {
27 |
28 | conferences = new ArrayList<>();
29 |
30 | pullParserFactory = XmlPullParserFactory.newInstance();
31 | XmlPullParser parser = pullParserFactory.newPullParser();
32 | parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
33 |
34 | Log.d("Parse", "parse");
35 | URL url = new URL(INDEX_FILE_URL);
36 | HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
37 | InputStream inputStream = null;
38 |
39 | try {
40 | inputStream = new BufferedInputStream(urlConnection.getInputStream());
41 | parser.setInput(inputStream, null);
42 | readIndex(parser);
43 | } finally {
44 | urlConnection.disconnect();
45 | inputStream.close();
46 | }
47 |
48 | return conferences;
49 | }
50 |
51 | private static void readIndex(XmlPullParser parser) throws XmlPullParserException, IOException {
52 | int event = parser.getEventType();
53 |
54 | while (event != XmlPullParser.END_DOCUMENT) {
55 | String name = parser.getName();
56 |
57 | switch (event) {
58 | case XmlPullParser.START_TAG:
59 | if (name.equals(CONFERENCE_TAG))
60 | conferences.add(readConferenceItem(parser));
61 | break;
62 | }
63 | event = parser.next();
64 | }
65 | }
66 |
67 | private static ConferenceMeta readConferenceItem(XmlPullParser parser) throws XmlPullParserException, IOException {
68 | parser.require(XmlPullParser.START_TAG, null, CONFERENCE_TAG);
69 | ConferenceMeta conference = new ConferenceMeta();
70 |
71 | while (parser.next() != XmlPullParser.END_TAG) {
72 | if (parser.getEventType() != XmlPullParser.START_TAG)
73 | continue;
74 |
75 | String name = parser.getName();
76 |
77 | if (name.equals(NAME_TAG))
78 | conference.setName(readText(parser));
79 | else if (name.equals(START_TAG))
80 | conference.setDate(new Date(Long.parseLong(readText(parser))));
81 | else if (name.equals(VENUE_TAG))
82 | conference.setVenue(readText(parser));
83 | else if (name.equals(IMAGE_TAG))
84 | conference.setLogoURL(readText(parser));
85 | else if (name.equals(CONFIG_URL_TAG))
86 | conference.setConfigURL(readText(parser));
87 | }
88 |
89 | parser.require(XmlPullParser.END_TAG, null, CONFERENCE_TAG);
90 |
91 | return conference;
92 | }
93 |
94 | private static String readText(XmlPullParser parser) throws XmlPullParserException, IOException {
95 | String result = "";
96 |
97 | if(parser.next() == XmlPullParser.TEXT) {
98 | result = parser.getText();
99 | parser.nextTag();
100 | }
101 | return result;
102 | }
103 | }
104 |
--------------------------------------------------------------------------------
/source-code/app/src/main/java/org/buildmlearn/mconference/util/PlayServicesUnavailableDialogFragment.java:
--------------------------------------------------------------------------------
1 | package org.buildmlearn.mconference.util;
2 |
3 | import android.app.Dialog;
4 | import android.app.DialogFragment;
5 | import android.content.DialogInterface;
6 | import android.content.Intent;
7 | import android.net.Uri;
8 | import android.os.Bundle;
9 | import android.support.v7.app.AlertDialog;
10 |
11 | import org.buildmlearn.mconference.R;
12 |
13 | /**
14 | * Created by Paul on 8/11/15.
15 | */
16 | public class PlayServicesUnavailableDialogFragment extends DialogFragment {
17 |
18 | @Override
19 | public Dialog onCreateDialog(Bundle savedInstanceState) {
20 | AlertDialog.Builder builder = new AlertDialog.Builder( getActivity() );
21 | builder.setMessage( getResources().getString( R.string.dialog_play_services_unavailable ) );
22 | builder.setNegativeButton(R.string.dialog_close_program, new DialogInterface.OnClickListener() {
23 | @Override
24 | public void onClick(DialogInterface dialogInterface, int i) {
25 | dismiss();
26 | }
27 | });
28 |
29 | builder.setPositiveButton( R.string.dialog_download_play_services, new DialogInterface.OnClickListener() {
30 | @Override
31 | public void onClick(DialogInterface dialogInterface, int i) {
32 | Intent intent = new Intent( Intent.ACTION_VIEW );
33 | intent.setData(Uri.parse("https://play.google.com/store/apps/details?id=com.google.android.gms&hl=en") );
34 | startActivity( intent );
35 | }
36 | });
37 |
38 | return builder.create();
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/source-code/app/src/main/res/drawable-hdpi/ic_search_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/source-code/app/src/main/res/drawable-hdpi/ic_search_white_24dp.png
--------------------------------------------------------------------------------
/source-code/app/src/main/res/drawable-mdpi/ic_search_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/source-code/app/src/main/res/drawable-mdpi/ic_search_white_24dp.png
--------------------------------------------------------------------------------
/source-code/app/src/main/res/drawable-xhdpi/ic_search_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/source-code/app/src/main/res/drawable-xhdpi/ic_search_white_24dp.png
--------------------------------------------------------------------------------
/source-code/app/src/main/res/drawable-xxhdpi/ic_search_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/source-code/app/src/main/res/drawable-xxhdpi/ic_search_white_24dp.png
--------------------------------------------------------------------------------
/source-code/app/src/main/res/drawable-xxxhdpi/ic_search_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/source-code/app/src/main/res/drawable-xxxhdpi/ic_search_white_24dp.png
--------------------------------------------------------------------------------
/source-code/app/src/main/res/drawable/ic_ham.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/source-code/app/src/main/res/drawable/ic_ham.png
--------------------------------------------------------------------------------
/source-code/app/src/main/res/drawable/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/source-code/app/src/main/res/drawable/logo.png
--------------------------------------------------------------------------------
/source-code/app/src/main/res/drawable/placeholder_1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/source-code/app/src/main/res/drawable/placeholder_1.jpg
--------------------------------------------------------------------------------
/source-code/app/src/main/res/layout/activity_base.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
12 |
13 |
14 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/source-code/app/src/main/res/layout/activity_conference.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
18 |
19 |
24 |
25 |
26 |
27 |
34 |
35 |
36 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/source-code/app/src/main/res/layout/activity_home.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
14 |
15 |
23 |
24 |
25 |
31 |
32 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/source-code/app/src/main/res/layout/activity_schedule.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
18 |
19 |
24 |
25 |
26 |
27 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/source-code/app/src/main/res/layout/activity_splash.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
14 |
15 |
26 |
27 |
--------------------------------------------------------------------------------
/source-code/app/src/main/res/layout/activity_talk.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
13 |
14 |
23 |
24 |
31 |
32 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/source-code/app/src/main/res/layout/fragment_about.xml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
14 |
15 |
18 |
19 |
26 |
27 |
37 |
38 |
47 |
48 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/source-code/app/src/main/res/layout/fragment_day.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/source-code/app/src/main/res/layout/fragment_register.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
10 |
11 |
18 |
19 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/source-code/app/src/main/res/layout/fragment_sponsor.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/source-code/app/src/main/res/layout/fragment_venue.xml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
12 |
13 |
18 |
19 |
28 |
29 |
33 |
34 |
42 |
43 |
49 |
50 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/source-code/app/src/main/res/layout/home_card_view.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
14 |
15 |
18 |
19 |
26 |
27 |
37 |
38 |
47 |
48 |
58 |
59 |
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/source-code/app/src/main/res/layout/nav_header.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
--------------------------------------------------------------------------------
/source-code/app/src/main/res/layout/schedule_card_view.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
16 |
17 |
20 |
21 |
29 |
39 |
51 |
52 |
61 |
62 |
70 |
71 |
79 |
80 |
85 |
86 |
95 |
96 |
104 |
105 |
106 |
107 |
108 |
--------------------------------------------------------------------------------
/source-code/app/src/main/res/layout/sponsor_card_view.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
17 |
18 |
22 |
23 |
32 |
33 |
39 |
40 |
48 |
49 |
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/source-code/app/src/main/res/layout/talk_content_scrolling.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
15 |
16 |
23 |
24 |
28 |
29 |
37 |
38 |
44 |
45 |
54 |
55 |
56 |
57 |
58 |
59 |
68 |
69 |
73 |
74 |
82 |
83 |
89 |
90 |
99 |
100 |
101 |
102 |
103 |
104 |
114 |
115 |
119 |
120 |
128 |
129 |
135 |
136 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
--------------------------------------------------------------------------------
/source-code/app/src/main/res/menu/home_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/source-code/app/src/main/res/menu/nav_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/source-code/app/src/main/res/menu/schedule_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/source-code/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/source-code/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/source-code/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/source-code/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/source-code/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/source-code/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/source-code/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/source-code/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/source-code/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/source-code/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/source-code/app/src/main/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 64dp
6 |
7 |
--------------------------------------------------------------------------------
/source-code/app/src/main/res/values/attrs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/source-code/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #3F51B5
4 | #303F9F
5 | #FF4081
6 | #66000000
7 | #000000
8 | #000000
9 | #ff56a9c7
10 |
11 |
--------------------------------------------------------------------------------
/source-code/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 |
6 |
--------------------------------------------------------------------------------
/source-code/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | mConference
3 | Menu
4 | Splash
5 | Schedule
6 | TalkDetail
7 | Home
8 | Schedule
9 | Bookmarks
10 | About the app
11 | Settings
12 | Search
13 | Google Play Services are out of date or unavailable.
14 | Download
15 | Close
16 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
17 |
18 |
--------------------------------------------------------------------------------
/source-code/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
19 |
20 |
27 |
28 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/source-code/app/src/test/java/org/buildmlearn/mconference/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package org.buildmlearn.mconference;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * To work on unit tests, switch the Test Artifact in the Build Variants view.
9 | */
10 | public class ExampleUnitTest {
11 | @Test
12 | public void addition_isCorrect() throws Exception {
13 | assertEquals(4, 2 + 2);
14 | }
15 | }
--------------------------------------------------------------------------------
/source-code/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.1.2'
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 | }
19 | }
20 |
21 | task clean(type: Delete) {
22 | delete rootProject.buildDir
23 | }
24 |
--------------------------------------------------------------------------------
/source-code/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
19 | org.gradle.daemon=true
--------------------------------------------------------------------------------
/source-code/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/source-code/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/source-code/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Thu Jun 23 02:55:13 IST 2016
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-2.10-all.zip
7 |
--------------------------------------------------------------------------------
/source-code/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 |
--------------------------------------------------------------------------------
/source-code/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 |
--------------------------------------------------------------------------------
/source-code/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------
/web page/css/jquery.timepicker.css:
--------------------------------------------------------------------------------
1 | .ui-timepicker-wrapper {
2 | overflow-y: auto;
3 | height: 150px;
4 | width: 6.5em;
5 | background: #fff;
6 | border: 1px solid #ddd;
7 | -webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);
8 | -moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);
9 | box-shadow:0 5px 10px rgba(0,0,0,0.2);
10 | outline: none;
11 | z-index: 10001;
12 | margin: 0;
13 | }
14 |
15 | .ui-timepicker-wrapper.ui-timepicker-with-duration {
16 | width: 13em;
17 | }
18 |
19 | .ui-timepicker-wrapper.ui-timepicker-with-duration.ui-timepicker-step-30,
20 | .ui-timepicker-wrapper.ui-timepicker-with-duration.ui-timepicker-step-60 {
21 | width: 11em;
22 | }
23 |
24 | .ui-timepicker-list {
25 | margin: 0;
26 | padding: 0;
27 | list-style: none;
28 | }
29 |
30 | .ui-timepicker-duration {
31 | margin-left: 5px; color: #888;
32 | }
33 |
34 | .ui-timepicker-list:hover .ui-timepicker-duration {
35 | color: #888;
36 | }
37 |
38 | .ui-timepicker-list li {
39 | padding: 3px 0 3px 5px;
40 | cursor: pointer;
41 | white-space: nowrap;
42 | color: #000;
43 | list-style: none;
44 | margin: 0;
45 | }
46 |
47 | .ui-timepicker-list:hover .ui-timepicker-selected {
48 | background: #fff; color: #000;
49 | }
50 |
51 | li.ui-timepicker-selected,
52 | .ui-timepicker-list li:hover,
53 | .ui-timepicker-list .ui-timepicker-selected:hover {
54 | background: #1980EC; color: #fff;
55 | }
56 |
57 | li.ui-timepicker-selected .ui-timepicker-duration,
58 | .ui-timepicker-list li:hover .ui-timepicker-duration {
59 | color: #ccc;
60 | }
61 |
62 | .ui-timepicker-list li.ui-timepicker-disabled,
63 | .ui-timepicker-list li.ui-timepicker-disabled:hover,
64 | .ui-timepicker-list li.ui-timepicker-selected.ui-timepicker-disabled {
65 | color: #888;
66 | cursor: default;
67 | }
68 |
69 | .ui-timepicker-list li.ui-timepicker-disabled:hover,
70 | .ui-timepicker-list li.ui-timepicker-selected.ui-timepicker-disabled {
71 | background: #f2f2f2;
72 | }
73 |
--------------------------------------------------------------------------------
/web page/fonts/roboto/Roboto-Bold.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/web page/fonts/roboto/Roboto-Bold.eot
--------------------------------------------------------------------------------
/web page/fonts/roboto/Roboto-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/web page/fonts/roboto/Roboto-Bold.ttf
--------------------------------------------------------------------------------
/web page/fonts/roboto/Roboto-Bold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/web page/fonts/roboto/Roboto-Bold.woff
--------------------------------------------------------------------------------
/web page/fonts/roboto/Roboto-Bold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/web page/fonts/roboto/Roboto-Bold.woff2
--------------------------------------------------------------------------------
/web page/fonts/roboto/Roboto-Light.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/web page/fonts/roboto/Roboto-Light.eot
--------------------------------------------------------------------------------
/web page/fonts/roboto/Roboto-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/web page/fonts/roboto/Roboto-Light.ttf
--------------------------------------------------------------------------------
/web page/fonts/roboto/Roboto-Light.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/web page/fonts/roboto/Roboto-Light.woff
--------------------------------------------------------------------------------
/web page/fonts/roboto/Roboto-Light.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/web page/fonts/roboto/Roboto-Light.woff2
--------------------------------------------------------------------------------
/web page/fonts/roboto/Roboto-Medium.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/web page/fonts/roboto/Roboto-Medium.eot
--------------------------------------------------------------------------------
/web page/fonts/roboto/Roboto-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/web page/fonts/roboto/Roboto-Medium.ttf
--------------------------------------------------------------------------------
/web page/fonts/roboto/Roboto-Medium.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/web page/fonts/roboto/Roboto-Medium.woff
--------------------------------------------------------------------------------
/web page/fonts/roboto/Roboto-Medium.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/web page/fonts/roboto/Roboto-Medium.woff2
--------------------------------------------------------------------------------
/web page/fonts/roboto/Roboto-Regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/web page/fonts/roboto/Roboto-Regular.eot
--------------------------------------------------------------------------------
/web page/fonts/roboto/Roboto-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/web page/fonts/roboto/Roboto-Regular.ttf
--------------------------------------------------------------------------------
/web page/fonts/roboto/Roboto-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/web page/fonts/roboto/Roboto-Regular.woff
--------------------------------------------------------------------------------
/web page/fonts/roboto/Roboto-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/web page/fonts/roboto/Roboto-Regular.woff2
--------------------------------------------------------------------------------
/web page/fonts/roboto/Roboto-Thin.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/web page/fonts/roboto/Roboto-Thin.eot
--------------------------------------------------------------------------------
/web page/fonts/roboto/Roboto-Thin.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/web page/fonts/roboto/Roboto-Thin.ttf
--------------------------------------------------------------------------------
/web page/fonts/roboto/Roboto-Thin.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/web page/fonts/roboto/Roboto-Thin.woff
--------------------------------------------------------------------------------
/web page/fonts/roboto/Roboto-Thin.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildmLearn/mConference-Framework/4b18b827813a57682e5f6a216faefbb73f5169c7/web page/fonts/roboto/Roboto-Thin.woff2
--------------------------------------------------------------------------------
/web page/js/XMLCreater.js:
--------------------------------------------------------------------------------
1 | $(document).ready(function(){
2 | $("form").submit(function(e){
3 | var values = {};
4 | $.each($("form").serializeArray(), function(i, field) {
5 | values[field.name] = field.value;
6 | });
7 |
8 | writeXML(values);
9 | e.preventDefault();
10 | });
11 | });
12 |
13 | function writeXML(values) {
14 | var XML = new XMLWriter();
15 |
16 | XML.BeginNode("mconference");
17 | XML.Node("name", values["conference-name"]);
18 | XML.Node("logo", values["logo-url"]);
19 | XML.Node("venue", values["venue"]);
20 |
21 | XML.BeginNode("time");
22 | var start = new Date(values["start-date"]);
23 | XML.Node("start", start.getTime().toString());
24 | var end = new Date(values["end-date"]);
25 | XML.Node("end", end.getTime().toString());
26 | XML.EndNode();
27 |
28 | XML.BeginNode("splashbg");
29 | XML.Attrib("type", values["splash-bg"]);
30 | XML.WriteString(values["splash-bg-value"]);
31 | XML.EndNode();
32 |
33 | XML.Node("aboutbg", values["about-bg"]);
34 | XML.Node("details", values["details"]);
35 | XML.Node("reglink", values["reg-link"]);
36 |
37 | XML.BeginNode("sponsors");
38 | XML.Attrib("type", values["sponsors"]);
39 | if(values["sponsors"] == 'individual') {
40 | var i;
41 | for (i = 1; values["sponsor-"+i+"-name"]; i++) {
42 | XML.BeginNode("item");
43 | XML.Attrib("id", i.toString());
44 | XML.Node("name", values["sponsor-"+i+"-name"]);
45 | XML.Node("image", values["sponsor-"+i+"-link"]);
46 | XML.EndNode();
47 | }
48 | }
49 | else {
50 | XML.WriteString(values["sponsors-link"]);
51 | }
52 | XML.EndNode();
53 |
54 | XML.BeginNode("talks");
55 | for (i = 1; values["talk-"+i+"-name"]; i++) {
56 | XML.BeginNode("item");
57 | XML.Attrib("id", i.toString());
58 | XML.Node("name", values["talk-"+i+"-name"]);
59 | XML.Node("desc", values["description-"+i]);
60 |
61 | var start = new Date(values["date-"+i] + " " + values["start-time-"+i]);
62 | XML.Node("start", start.getTime().toString());
63 |
64 | var end = new Date(values["date-"+i] + " " + values["end-time-"+i]);
65 | XML.Node("end", end.getTime().toString());
66 |
67 | XML.Node("venue", values["venue-"+i]);
68 | XML.Node("image", values["talk-"+i+"-img"]);
69 | XML.EndNode();
70 | }
71 | XML.EndNode();
72 |
73 | XML.EndNode();
74 | var blob = new Blob([XML.ToString()], {type: "application/xml;charset=utf-8"});
75 | saveAs(blob, "config.xml");
76 | }
--------------------------------------------------------------------------------
/web page/js/XMLWriter.js:
--------------------------------------------------------------------------------
1 | function XMLWriter()
2 | {
3 | this.XML=[];
4 | this.Nodes=[];
5 | this.State="";
6 | this.FormatXML = function(Str)
7 | {
8 | if (Str)
9 | return Str.replace(/&/g, "&").replace(/\"/g, """).replace(//g, ">");
10 | return ""
11 | }
12 | this.BeginNode = function(Name)
13 | {
14 | if (!Name) return;
15 | if (this.State=="beg") this.XML.push(">");
16 | this.State="beg";
17 | this.Nodes.push(Name);
18 | this.XML.push("<"+Name);
19 | }
20 | this.EndNode = function()
21 | {
22 | if (this.State=="beg")
23 | {
24 | this.XML.push("/>");
25 | this.Nodes.pop();
26 | }
27 | else if (this.Nodes.length>0)
28 | this.XML.push(""+this.Nodes.pop()+">");
29 | this.State="";
30 | }
31 | this.Attrib = function(Name, Value)
32 | {
33 | if (this.State!="beg" || !Name) return;
34 | this.XML.push(" "+Name+"=\""+this.FormatXML(Value)+"\"");
35 | }
36 | this.WriteString = function(Value)
37 | {
38 | if (this.State=="beg") this.XML.push(">");
39 | this.XML.push(this.FormatXML(Value));
40 | this.State="";
41 | }
42 | this.Node = function(Name, Value)
43 | {
44 | if (!Name) return;
45 | if (this.State=="beg") this.XML.push(">");
46 | this.XML.push((Value=="" || !Value)?"<"+Name+"/>":"<"+Name+">"+this.FormatXML(Value)+""+Name+">");
47 | this.State="";
48 | }
49 | this.Close = function()
50 | {
51 | while (this.Nodes.length>0)
52 | this.EndNode();
53 | this.State="closed";
54 | }
55 | this.ToString = function(){return this.XML.join("");}
56 | }
--------------------------------------------------------------------------------
/web page/js/custom.js:
--------------------------------------------------------------------------------
1 | $('.datepicker').pickadate({
2 | selectMonths: true,
3 | selectYears: 15
4 | });
5 |
6 | $('#sponsors-web').hide();
7 | $('select').material_select();
8 | $('.timepicker').timepicker({ 'timeFormat': 'h:i A' });
9 |
10 | $(document).ready(function() {
11 | $('#splash-bg').change(function(){
12 | if($('#splash-bg').val() == 'image') {
13 | $('#splash-bg-value').attr('type', 'url');
14 | $('#splash-bg-value').prop('disabled', false);
15 | $('#splash-bg-label').attr('data-error', 'URL Invalid');
16 | $('#splash-bg-label').text('Image Link');
17 | }
18 | else if ($('#splash-bg').val() == 'colour') {
19 | $('#splash-bg-value').attr('type', 'text');
20 | $('#splash-bg-value').prop('disabled', false);
21 | $('#splash-bg-label').removeAttr('data-error');
22 | $('#splash-bg-label').text('Hex Code');
23 | }
24 | else {
25 | $('#splash-bg-value').prop('disabled', true);
26 | $('#splash-bg-value').val('');
27 | $('#splash-bg-label').text('None');
28 | }
29 | });
30 |
31 | $('#sponsors').change(function(){
32 | if($('#sponsors').val() == 'individual') {
33 | $('#sponsors-web').hide();
34 | $('#sponsors-list').show();
35 | $('#add-sponsors').show();
36 | }
37 | else {
38 | $('#sponsors-web').show();
39 | $('#sponsors-list').hide();
40 | $('#add-sponsors').hide();
41 | }
42 | });
43 |
44 | $("#add-sponsors-btn").click(function() {
45 | var intId = $("#sponsors-list>div").length + 1;
46 | var newSponsor = $("");
47 |
48 | $("#sponsors-list").append(newSponsor);
49 | });
50 |
51 | $("#add-talks-btn").click(function() {
52 | var intId = $("#talks-list>div").length + 1;
53 | var newTalk = $("
");
54 |
55 | $("#talks-list").append(newTalk);
56 |
57 | $('.datepicker').pickadate({
58 | selectMonths: true,
59 | selectYears: 15
60 | });
61 |
62 | $('.timepicker').timepicker({ 'timeFormat': 'h:i A' });
63 | });
64 | });
--------------------------------------------------------------------------------