Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
I
InstiApp
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
RAHUL SHARMA
InstiApp
Commits
76c88c8b
Commit
76c88c8b
authored
Oct 27, 2018
by
Sajal
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add easter egg to switch to dark theme
parent
f55e0af0
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
97 additions
and
22 deletions
+97
-22
app/src/main/java/app/insti/Utils.java
app/src/main/java/app/insti/Utils.java
+16
-0
app/src/main/java/app/insti/activity/MainActivity.java
app/src/main/java/app/insti/activity/MainActivity.java
+73
-17
app/src/main/res/values/styles.xml
app/src/main/res/values/styles.xml
+8
-5
No files found.
app/src/main/java/app/insti/Utils.java
View file @
76c88c8b
...
@@ -8,11 +8,13 @@ import android.support.v4.app.Fragment;
...
@@ -8,11 +8,13 @@ import android.support.v4.app.Fragment;
import
android.support.v4.app.FragmentActivity
;
import
android.support.v4.app.FragmentActivity
;
import
android.support.v4.app.FragmentTransaction
;
import
android.support.v4.app.FragmentTransaction
;
import
android.widget.ImageView
;
import
android.widget.ImageView
;
import
android.widget.Toast
;
import
com.google.gson.Gson
;
import
com.google.gson.Gson
;
import
com.squareup.picasso.Callback
;
import
com.squareup.picasso.Callback
;
import
com.squareup.picasso.Picasso
;
import
com.squareup.picasso.Picasso
;
import
app.insti.activity.MainActivity
;
import
app.insti.api.RetrofitInterface
;
import
app.insti.api.RetrofitInterface
;
import
app.insti.api.model.Body
;
import
app.insti.api.model.Body
;
import
app.insti.api.model.Event
;
import
app.insti.api.model.Event
;
...
@@ -25,6 +27,7 @@ public final class Utils {
...
@@ -25,6 +27,7 @@ public final class Utils {
public
static
UpdatableList
<
Event
>
eventCache
=
new
UpdatableList
<>();
public
static
UpdatableList
<
Event
>
eventCache
=
new
UpdatableList
<>();
private
static
String
sessionId
;
private
static
String
sessionId
;
private
static
RetrofitInterface
retrofitInterface
;
private
static
RetrofitInterface
retrofitInterface
;
public
static
boolean
darkTheme
=
false
;
public
static
final
void
loadImageWithPlaceholder
(
final
ImageView
imageView
,
final
String
url
)
{
public
static
final
void
loadImageWithPlaceholder
(
final
ImageView
imageView
,
final
String
url
)
{
Picasso
.
get
()
Picasso
.
get
()
...
@@ -114,4 +117,17 @@ public final class Utils {
...
@@ -114,4 +117,17 @@ public final class Utils {
context
.
startActivity
(
browse
);
context
.
startActivity
(
browse
);
}
}
}
}
public
static
void
changeTheme
(
FragmentActivity
context
)
{
if
(
darkTheme
)
{
context
.
setTheme
(
R
.
style
.
AppTheme
);
}
else
{
Toast
.
makeText
(
context
,
"You have unlocked super max pro mode"
,
Toast
.
LENGTH_SHORT
).
show
();
context
.
setTheme
(
R
.
style
.
AppThemeDark
);
}
darkTheme
=
!
darkTheme
;
Intent
intent
=
new
Intent
(
context
,
MainActivity
.
class
);
context
.
startActivity
(
intent
);
context
.
finish
();
}
}
}
app/src/main/java/app/insti/activity/MainActivity.java
View file @
76c88c8b
package
app.insti.activity
;
package
app.insti.activity
;
import
android.annotation.SuppressLint
;
import
android.annotation.TargetApi
;
import
android.annotation.TargetApi
;
import
android.app.Activity
;
import
android.app.Activity
;
import
android.app.NotificationChannel
;
import
android.app.NotificationChannel
;
...
@@ -24,8 +25,10 @@ import android.support.v7.app.ActionBarDrawerToggle;
...
@@ -24,8 +25,10 @@ import android.support.v7.app.ActionBarDrawerToggle;
import
android.support.v7.app.AppCompatActivity
;
import
android.support.v7.app.AppCompatActivity
;
import
android.support.v7.widget.Toolbar
;
import
android.support.v7.widget.Toolbar
;
import
android.util.Log
;
import
android.util.Log
;
import
android.view.GestureDetector
;
import
android.view.Menu
;
import
android.view.Menu
;
import
android.view.MenuItem
;
import
android.view.MenuItem
;
import
android.view.MotionEvent
;
import
android.view.View
;
import
android.view.View
;
import
android.view.inputmethod.InputMethodManager
;
import
android.view.inputmethod.InputMethodManager
;
import
android.widget.ImageView
;
import
android.widget.ImageView
;
...
@@ -95,7 +98,9 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
...
@@ -95,7 +98,9 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
private
RetrofitInterface
retrofitInterface
;
private
RetrofitInterface
retrofitInterface
;
private
List
<
Notification
>
notifications
=
null
;
private
List
<
Notification
>
notifications
=
null
;
/** which menu item should be checked on activity start */
/**
* which menu item should be checked on activity start
*/
private
int
initMenuChecked
=
R
.
id
.
nav_feed
;
private
int
initMenuChecked
=
R
.
id
.
nav_feed
;
public
static
void
hideKeyboard
(
Activity
activity
)
{
public
static
void
hideKeyboard
(
Activity
activity
)
{
...
@@ -109,8 +114,12 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
...
@@ -109,8 +114,12 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
imm
.
hideSoftInputFromWindow
(
view
.
getWindowToken
(),
0
);
imm
.
hideSoftInputFromWindow
(
view
.
getWindowToken
(),
0
);
}
}
@SuppressLint
(
"ClickableViewAccessibility"
)
@Override
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
if
(
Utils
.
darkTheme
)
{
setTheme
(
R
.
style
.
AppThemeDark_NoActionBar
);
}
super
.
onCreate
(
savedInstanceState
);
super
.
onCreate
(
savedInstanceState
);
ServiceGenerator
serviceGenerator
=
new
ServiceGenerator
(
getApplicationContext
());
ServiceGenerator
serviceGenerator
=
new
ServiceGenerator
(
getApplicationContext
());
...
@@ -150,10 +159,29 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
...
@@ -150,10 +159,29 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
}
}
}
}
toolbar
.
setOnTouchListener
(
new
View
.
OnTouchListener
()
{
private
GestureDetector
gestureDetector
=
new
GestureDetector
(
MainActivity
.
this
,
new
GestureDetector
.
SimpleOnGestureListener
()
{
@Override
public
boolean
onDoubleTap
(
MotionEvent
e
)
{
Toast
.
makeText
(
MainActivity
.
this
,
"You have unlocked super max pro mode"
,
Toast
.
LENGTH_SHORT
).
show
();
Utils
.
changeTheme
(
MainActivity
.
this
);
return
super
.
onDoubleTap
(
e
);
}
});
@Override
public
boolean
onTouch
(
View
v
,
MotionEvent
event
)
{
gestureDetector
.
onTouchEvent
(
event
);
return
true
;
}
});
checkLatestVersion
();
checkLatestVersion
();
}
}
/** Get the notifications from memory cache or network */
/**
* Get the notifications from memory cache or network
*/
private
void
fetchNotifications
()
{
private
void
fetchNotifications
()
{
// Try memory cache
// Try memory cache
if
(
notifications
!=
null
)
{
if
(
notifications
!=
null
)
{
...
@@ -174,7 +202,9 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
...
@@ -174,7 +202,9 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
});
});
}
}
/** Show the right notification icon */
/**
* Show the right notification icon
*/
private
void
showNotifications
()
{
private
void
showNotifications
()
{
if
(
notifications
!=
null
&&
!
notifications
.
isEmpty
())
{
if
(
notifications
!=
null
&&
!
notifications
.
isEmpty
())
{
menu
.
findItem
(
R
.
id
.
action_notifications
).
setIcon
(
R
.
drawable
.
baseline_notifications_active_white_24
);
menu
.
findItem
(
R
.
id
.
action_notifications
).
setIcon
(
R
.
drawable
.
baseline_notifications_active_white_24
);
...
@@ -183,7 +213,9 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
...
@@ -183,7 +213,9 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
}
}
}
}
/** Get version code we are currently on */
/**
* Get version code we are currently on
*/
private
int
getCurrentVersion
()
{
private
int
getCurrentVersion
()
{
try
{
try
{
PackageInfo
pInfo
=
this
.
getPackageManager
().
getPackageInfo
(
getPackageName
(),
0
);
PackageInfo
pInfo
=
this
.
getPackageManager
().
getPackageInfo
(
getPackageName
(),
0
);
...
@@ -193,10 +225,14 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
...
@@ -193,10 +225,14 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
}
}
}
}
/** Check for updates in andro.json */
/**
* Check for updates in andro.json
*/
private
void
checkLatestVersion
()
{
private
void
checkLatestVersion
()
{
final
int
versionCode
=
getCurrentVersion
();
final
int
versionCode
=
getCurrentVersion
();
if
(
versionCode
==
0
)
{
return
;
}
if
(
versionCode
==
0
)
{
return
;
}
RetrofitInterface
retrofitInterface
=
Utils
.
getRetrofitInterface
();
RetrofitInterface
retrofitInterface
=
Utils
.
getRetrofitInterface
();
retrofitInterface
.
getLatestVersion
().
enqueue
(
new
EmptyCallback
<
JsonObject
>()
{
retrofitInterface
.
getLatestVersion
().
enqueue
(
new
EmptyCallback
<
JsonObject
>()
{
@Override
@Override
...
@@ -258,7 +294,9 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
...
@@ -258,7 +294,9 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
mNotificationManager
.
createNotificationChannel
(
mChannel
);
mNotificationManager
.
createNotificationChannel
(
mChannel
);
}
}
/** Handle opening event/body/blog from FCM notification */
/**
* Handle opening event/body/blog from FCM notification
*/
private
void
handleFCMIntent
(
Bundle
bundle
)
{
private
void
handleFCMIntent
(
Bundle
bundle
)
{
/* Mark the notification read */
/* Mark the notification read */
final
String
notificationId
=
bundle
.
getString
(
FCM_BUNDLE_NOTIFICATION_ID
);
final
String
notificationId
=
bundle
.
getString
(
FCM_BUNDLE_NOTIFICATION_ID
);
...
@@ -274,7 +312,9 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
...
@@ -274,7 +312,9 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
);
);
}
}
/** Handle intents for links */
/**
* Handle intents for links
*/
private
void
handleIntent
(
Intent
appLinkIntent
)
{
private
void
handleIntent
(
Intent
appLinkIntent
)
{
String
appLinkAction
=
appLinkIntent
.
getAction
();
String
appLinkAction
=
appLinkIntent
.
getAction
();
String
appLinkData
=
appLinkIntent
.
getDataString
();
String
appLinkData
=
appLinkIntent
.
getDataString
();
...
@@ -283,9 +323,13 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
...
@@ -283,9 +323,13 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
}
}
}
}
/** Open the proper fragment from given type and id */
/**
* Open the proper fragment from given type and id
*/
private
void
chooseIntent
(
String
type
,
String
id
)
{
private
void
chooseIntent
(
String
type
,
String
id
)
{
if
(
type
==
null
||
id
==
null
)
{
return
;
}
if
(
type
==
null
||
id
==
null
)
{
return
;
}
switch
(
type
)
{
switch
(
type
)
{
case
DATA_TYPE_BODY:
case
DATA_TYPE_BODY:
openBodyFragment
(
id
);
openBodyFragment
(
id
);
...
@@ -304,7 +348,9 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
...
@@ -304,7 +348,9 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
Log
.
e
(
"NOTIFICATIONS"
,
"Server sent invalid notification?"
);
Log
.
e
(
"NOTIFICATIONS"
,
"Server sent invalid notification?"
);
}
}
/** Open the proper fragment from given type, id and extra */
/**
* Open the proper fragment from given type, id and extra
*/
private
void
chooseIntent
(
String
type
,
String
id
,
String
extra
)
{
private
void
chooseIntent
(
String
type
,
String
id
,
String
extra
)
{
if
(
extra
==
null
)
{
if
(
extra
==
null
)
{
chooseIntent
(
type
,
id
);
chooseIntent
(
type
,
id
);
...
@@ -324,18 +370,24 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
...
@@ -324,18 +370,24 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
}
}
}
}
/** Open user fragment from given id */
/**
* Open user fragment from given id
*/
private
void
openUserFragment
(
String
id
)
{
private
void
openUserFragment
(
String
id
)
{
UserFragment
userFragment
=
UserFragment
.
newInstance
(
id
);
UserFragment
userFragment
=
UserFragment
.
newInstance
(
id
);
updateFragment
(
userFragment
);
updateFragment
(
userFragment
);
}
}
/** Open the body fragment from given id */
/**
* Open the body fragment from given id
*/
private
void
openBodyFragment
(
String
id
)
{
private
void
openBodyFragment
(
String
id
)
{
Utils
.
openBodyFragment
(
new
Body
(
id
),
this
);
Utils
.
openBodyFragment
(
new
Body
(
id
),
this
);
}
}
/** Open the event fragment from the provided id */
/**
* Open the event fragment from the provided id
*/
private
void
openEventFragment
(
String
id
)
{
private
void
openEventFragment
(
String
id
)
{
RetrofitInterface
retrofitInterface
=
Utils
.
getRetrofitInterface
();
RetrofitInterface
retrofitInterface
=
Utils
.
getRetrofitInterface
();
final
FragmentActivity
self
=
this
;
final
FragmentActivity
self
=
this
;
...
@@ -546,7 +598,9 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
...
@@ -546,7 +598,9 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
return
true
;
return
true
;
}
}
/** Open placement blog fragment */
/**
* Open placement blog fragment
*/
private
void
openPlacementBlog
()
{
private
void
openPlacementBlog
()
{
if
(
session
.
isLoggedIn
())
{
if
(
session
.
isLoggedIn
())
{
PlacementBlogFragment
placementBlogFragment
=
new
PlacementBlogFragment
();
PlacementBlogFragment
placementBlogFragment
=
new
PlacementBlogFragment
();
...
@@ -565,7 +619,9 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
...
@@ -565,7 +619,9 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
}
}
}
}
/** Change the active fragment to the supplied one */
/**
* Change the active fragment to the supplied one
*/
public
void
updateFragment
(
Fragment
fragment
)
{
public
void
updateFragment
(
Fragment
fragment
)
{
Log
.
d
(
TAG
,
"updateFragment: "
+
fragment
.
toString
());
Log
.
d
(
TAG
,
"updateFragment: "
+
fragment
.
toString
());
Bundle
bundle
=
fragment
.
getArguments
();
Bundle
bundle
=
fragment
.
getArguments
();
...
@@ -577,7 +633,7 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
...
@@ -577,7 +633,7 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
bundle
.
putString
(
Constants
.
USER_HOSTEL
,
session
.
isLoggedIn
()
&&
currentUser
.
getHostel
()
!=
null
?
currentUser
.
getHostel
()
:
"1"
);
bundle
.
putString
(
Constants
.
USER_HOSTEL
,
session
.
isLoggedIn
()
&&
currentUser
.
getHostel
()
!=
null
?
currentUser
.
getHostel
()
:
"1"
);
if
(
fragment
instanceof
SettingsFragment
&&
session
.
isLoggedIn
())
if
(
fragment
instanceof
SettingsFragment
&&
session
.
isLoggedIn
())
bundle
.
putString
(
Constants
.
USER_ID
,
currentUser
.
getUserID
());
bundle
.
putString
(
Constants
.
USER_ID
,
currentUser
.
getUserID
());
if
(
fragment
instanceof
ComplaintsFragment
&&
session
.
isLoggedIn
()){
if
(
fragment
instanceof
ComplaintsFragment
&&
session
.
isLoggedIn
())
{
bundle
.
putString
(
Constants
.
USER_ID
,
currentUser
.
getUserID
());
bundle
.
putString
(
Constants
.
USER_ID
,
currentUser
.
getUserID
());
bundle
.
putString
(
Constants
.
CURRENT_USER_PROFILE_PICTURE
,
currentUser
.
getUserProfilePictureUrl
());
bundle
.
putString
(
Constants
.
CURRENT_USER_PROFILE_PICTURE
,
currentUser
.
getUserProfilePictureUrl
());
}
}
...
...
app/src/main/res/values/styles.xml
View file @
76c88c8b
...
@@ -8,8 +8,7 @@
...
@@ -8,8 +8,7 @@
<item
name=
"colorAccent"
>
@color/colorAccent
</item>
<item
name=
"colorAccent"
>
@color/colorAccent
</item>
<item
name=
"themeColor"
>
#FFFFFF
</item>
<item
name=
"themeColor"
>
#FFFFFF
</item>
<item
name=
"themeColorInverse"
>
#000000
</item>
<item
name=
"themeColorInverse"
>
#000000
</item>
<item
name=
"newsColor"
>
#F2F2F2
</item>
<item
name=
"android:windowAnimationStyle"
>
@style/WindowAnimationTransition
</item>
<item
name=
"urlColor"
>
@color/colorPrimary
</item>
</style>
</style>
<style
name=
"AppTheme.NoActionBar"
>
<style
name=
"AppTheme.NoActionBar"
>
...
@@ -23,8 +22,7 @@
...
@@ -23,8 +22,7 @@
<item
name=
"colorAccent"
>
@color/colorAccent
</item>
<item
name=
"colorAccent"
>
@color/colorAccent
</item>
<item
name=
"themeColor"
>
#000000
</item>
<item
name=
"themeColor"
>
#000000
</item>
<item
name=
"themeColorInverse"
>
#FFFFFF
</item>
<item
name=
"themeColorInverse"
>
#FFFFFF
</item>
<item
name=
"newsColor"
>
#00000000
</item>
<item
name=
"android:windowAnimationStyle"
>
@style/WindowAnimationTransition
</item>
<item
name=
"urlColor"
>
@color/colorAccent
</item>
</style>
</style>
<style
name=
"AppThemeDark.NoActionBar"
>
<style
name=
"AppThemeDark.NoActionBar"
>
...
@@ -33,7 +31,7 @@
...
@@ -33,7 +31,7 @@
</style>
</style>
<style
name=
"BlueAccent"
>
<style
name=
"BlueAccent"
>
<item
name=
"colorAccent"
>
?attr/urlColor
</item>
<item
name=
"colorAccent"
>
@color/colorPrimary
</item>
</style>
</style>
<style
name=
"AppTheme.AppBarOverlay"
parent=
"ThemeOverlay.AppCompat.Dark.ActionBar"
/>
<style
name=
"AppTheme.AppBarOverlay"
parent=
"ThemeOverlay.AppCompat.Dark.ActionBar"
/>
...
@@ -72,4 +70,9 @@
...
@@ -72,4 +70,9 @@
<item
name=
"android:textColor"
>
#999
</item>
<item
name=
"android:textColor"
>
#999
</item>
<item
name=
"android:textSize"
>
12sp
</item>
<item
name=
"android:textSize"
>
12sp
</item>
</style>
</style>
<style
name=
"WindowAnimationTransition"
>
<item
name=
"android:windowEnterAnimation"
>
@android:anim/fade_in
</item>
<item
name=
"android:windowExitAnimation"
>
@android:anim/fade_out
</item>
</style>
</resources>
</resources>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment