Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
T
Talking Reminder
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
RAUSHAN RAJ
Talking Reminder
Commits
8c87a0cf
Commit
8c87a0cf
authored
Nov 26, 2019
by
RAUSHAN RAJ
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Firebase auth and data pushing working
parent
e9ed32f3
Changes
15
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
310 additions
and
145 deletions
+310
-145
README.md
README.md
+2
-2
app/build.gradle
app/build.gradle
+6
-6
app/src/main/java/com/sudogeeks/talking_reminder/AlarmReceiver.java
...in/java/com/sudogeeks/talking_reminder/AlarmReceiver.java
+26
-6
app/src/main/java/com/sudogeeks/talking_reminder/BootReceiver.java
...ain/java/com/sudogeeks/talking_reminder/BootReceiver.java
+2
-2
app/src/main/java/com/sudogeeks/talking_reminder/MainActivity.java
...ain/java/com/sudogeeks/talking_reminder/MainActivity.java
+136
-33
app/src/main/java/com/sudogeeks/talking_reminder/NotificationHelper.java
...va/com/sudogeeks/talking_reminder/NotificationHelper.java
+3
-3
app/src/main/java/com/sudogeeks/talking_reminder/ReminderAddActivity.java
...a/com/sudogeeks/talking_reminder/ReminderAddActivity.java
+29
-13
app/src/main/java/com/sudogeeks/talking_reminder/ReminderDO.java
.../main/java/com/sudogeeks/talking_reminder/ReminderDO.java
+29
-5
app/src/main/java/com/sudogeeks/talking_reminder/ReminderDatabase.java
...java/com/sudogeeks/talking_reminder/ReminderDatabase.java
+39
-39
app/src/main/java/com/sudogeeks/talking_reminder/ReminderEditActivity.java
.../com/sudogeeks/talking_reminder/ReminderEditActivity.java
+21
-21
app/src/main/java/com/sudogeeks/talking_reminder/ReminderReceiveActivity.java
...m/sudogeeks/talking_reminder/ReminderReceiveActivity.java
+4
-4
app/src/main/res/menu/main_menu.xml
app/src/main/res/menu/main_menu.xml
+8
-8
app/src/main/res/values/colors.xml
app/src/main/res/values/colors.xml
+2
-0
app/src/main/res/values/strings.xml
app/src/main/res/values/strings.xml
+2
-1
app/src/main/res/values/styles.xml
app/src/main/res/values/styles.xml
+1
-2
No files found.
README.md
View file @
8c87a0cf
# Remindly
Android reminder app
Android reminder
DO
app
Features
-------
-
Material Design UI
-
Repeating reminder
s
. Set intervals in minutes, hours, days, weeks and months
-
Repeating reminder
DOS
. Set intervals in minutes, hours, days, weeks and months
-
Completely free and ad-free
...
...
app/build.gradle
View file @
8c87a0cf
...
...
@@ -7,7 +7,7 @@ android {
buildToolsVersion
"29.0.2"
defaultConfig
{
applicationId
"com.
blanyal.remindme
"
applicationId
"com.
sudogeeks.talking_reminder
"
minSdkVersion
16
targetSdkVersion
29
versionCode
2
...
...
@@ -41,13 +41,13 @@ dependencies {
implementation
'org.jetbrains:annotations-java5:15.0'
// add the Firebase SDK Dependencies
//
implementation 'com.google.firebase:firebase-analytics:17.2.0'
//
implementation 'com.google.firebase:firebase-database:19.2.0'
//
implementation 'com.google.firebase:firebase-auth:19.1.0'
//
implementation 'com.firebaseui:firebase-ui-auth:6.0.2'
implementation
'com.google.firebase:firebase-analytics:17.2.0'
implementation
'com.google.firebase:firebase-database:19.2.0'
implementation
'com.google.firebase:firebase-auth:19.1.0'
implementation
'com.firebaseui:firebase-ui-auth:6.0.2'
// implementation 'com.google.firebase:firebase-appindexing:19.0.0'
// implementation 'com.google.firebase:firebase-firestore:21.2.0'
// implementation 'com.google.gms:google-services:4.3.2'
// implementation 'com.google.firebase:firebase-storage:19.1.0'
}
//apply plugin: 'com.google.gms.google-services'
\ No newline at end of file
apply
plugin:
'com.google.gms.google-services'
\ No newline at end of file
app/src/main/java/com/sudogeeks/talking_reminder/AlarmReceiver.java
View file @
8c87a0cf
...
...
@@ -14,19 +14,33 @@ import androidx.core.app.NotificationCompat;
import
java.util.Calendar
;
/** \brief A class to do something
*
* description class ke andar
*
*
*
*
*/
public
class
AlarmReceiver
extends
BroadcastReceiver
{
AlarmManager
mAlarmManager
;
PendingIntent
mPendingIntent
;
@Override
/** description
* @param context: what context is
* @return void
*
*
*/
public
void
onReceive
(
Context
context
,
Intent
intent
)
{
int
mReceivedID
=
Integer
.
parseInt
(
intent
.
getStringExtra
(
ReminderEditActivity
.
EXTRA_REMINDER_ID
));
//Get notification title from Reminder Database
//Get notification title from Reminder
DO
Database
ReminderDatabase
rb
=
new
ReminderDatabase
(
context
);
Reminder
reminder
=
rb
.
getReminder
(
mReceivedID
);
String
mTitle
=
reminder
.
getTitle
();
Reminder
DO
reminderDO
=
rb
.
getReminder
(
mReceivedID
);
String
mTitle
=
reminder
DO
.
getTitle
();
// Create intent to open ReminderEditActivity on notification click
...
...
@@ -80,10 +94,16 @@ public class AlarmReceiver extends BroadcastReceiver {
}
/**
*
* @param context
* @param calendar
* @param ID
*/
public
void
setAlarm
(
Context
context
,
Calendar
calendar
,
int
ID
)
{
mAlarmManager
=
(
AlarmManager
)
context
.
getSystemService
(
Context
.
ALARM_SERVICE
);
// Put Reminder ID in Intent Extra
// Put Reminder
DO
ID in Intent Extra
Intent
intent
=
new
Intent
(
context
,
AlarmReceiver
.
class
);
intent
.
putExtra
(
ReminderEditActivity
.
EXTRA_REMINDER_ID
,
Integer
.
toString
(
ID
));
mPendingIntent
=
PendingIntent
.
getBroadcast
(
context
,
ID
,
intent
,
PendingIntent
.
FLAG_CANCEL_CURRENT
);
...
...
@@ -109,7 +129,7 @@ public class AlarmReceiver extends BroadcastReceiver {
public
void
setRepeatAlarm
(
Context
context
,
Calendar
calendar
,
int
ID
,
long
RepeatTime
)
{
mAlarmManager
=
(
AlarmManager
)
context
.
getSystemService
(
Context
.
ALARM_SERVICE
);
// Put Reminder ID in Intent Extra
// Put Reminder
DO
ID in Intent Extra
Intent
intent
=
new
Intent
(
context
,
AlarmReceiver
.
class
);
intent
.
putExtra
(
ReminderEditActivity
.
EXTRA_REMINDER_ID
,
Integer
.
toString
(
ID
));
mPendingIntent
=
PendingIntent
.
getBroadcast
(
context
,
ID
,
intent
,
PendingIntent
.
FLAG_CANCEL_CURRENT
);
...
...
@@ -135,7 +155,7 @@ public class AlarmReceiver extends BroadcastReceiver {
public
void
cancelAlarm
(
Context
context
,
int
ID
)
{
mAlarmManager
=
(
AlarmManager
)
context
.
getSystemService
(
Context
.
ALARM_SERVICE
);
// Cancel Alarm using Reminder ID
// Cancel Alarm using Reminder
DO
ID
mPendingIntent
=
PendingIntent
.
getBroadcast
(
context
,
ID
,
new
Intent
(
context
,
AlarmReceiver
.
class
),
0
);
mAlarmManager
.
cancel
(
mPendingIntent
);
...
...
app/src/main/java/com/sudogeeks/talking_reminder/BootReceiver.java
View file @
8c87a0cf
...
...
@@ -38,9 +38,9 @@ public class BootReceiver extends BroadcastReceiver {
mCalendar
=
Calendar
.
getInstance
();
mAlarmReceiver
=
new
AlarmReceiver
();
List
<
Reminder
>
reminders
=
rb
.
getAllReminders
();
List
<
Reminder
DO
>
reminderDOS
=
rb
.
getAllReminders
();
for
(
Reminder
rm
:
reminders
)
{
for
(
Reminder
DO
rm
:
reminderDOS
)
{
mReceivedID
=
rm
.
getID
();
mRepeat
=
rm
.
getRepeat
();
mRepeatNo
=
rm
.
getRepeatNo
();
...
...
app/src/main/java/com/sudogeeks/talking_reminder/MainActivity.java
View file @
8c87a0cf
...
...
@@ -12,6 +12,8 @@ import android.widget.ImageView;
import
android.widget.TextView
;
import
android.widget.Toast
;
import
androidx.annotation.NonNull
;
import
androidx.annotation.Nullable
;
import
androidx.appcompat.app.AppCompatActivity
;
import
androidx.appcompat.view.ActionMode
;
import
androidx.appcompat.widget.Toolbar
;
...
...
@@ -23,12 +25,21 @@ import com.amulyakhare.textdrawable.util.ColorGenerator;
import
com.bignerdranch.android.multiselector.ModalMultiSelectorCallback
;
import
com.bignerdranch.android.multiselector.MultiSelector
;
import
com.bignerdranch.android.multiselector.SwappingHolder
;
import
com.firebase.ui.auth.AuthUI
;
import
com.google.android.material.floatingactionbutton.FloatingActionButton
;
import
com.google.firebase.auth.FirebaseAuth
;
import
com.google.firebase.auth.FirebaseUser
;
import
com.google.firebase.database.ChildEventListener
;
import
com.google.firebase.database.DataSnapshot
;
import
com.google.firebase.database.DatabaseError
;
import
com.google.firebase.database.DatabaseReference
;
import
com.google.firebase.database.FirebaseDatabase
;
import
java.text.DateFormat
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Collections
;
import
java.util.Comparator
;
import
java.util.LinkedHashMap
;
...
...
@@ -46,6 +57,15 @@ public class MainActivity extends AppCompatActivity {
private
ReminderDatabase
rb
;
private
MultiSelector
mMultiSelector
=
new
MultiSelector
();
private
AlarmReceiver
mAlarmReceiver
;
private
FirebaseDatabase
firebaseDatabase
;
//Entrypoint for our firebase database
private
DatabaseReference
reminderDatabaseReference
;
//To references specific part of the database
private
ChildEventListener
dbChildEventListener
;
//No notify the app whenever data changes in firebase database
private
FirebaseAuth
firebaseAuth
;
//For User authentication
private
FirebaseAuth
.
AuthStateListener
authStateListener
;
//Listener which invokes whenever auth state changes
private
ArrayList
<
ReminderDO
>
reminderDOArrayList
=
new
ArrayList
<>();
private
static
final
int
RC_SIGN_IN
=
123
;
// Choose an arbitrary request code value
// Multi select items in recycler view
private
ModalMultiSelectorCallback
mDeleteMode
=
new
ModalMultiSelectorCallback
(
mMultiSelector
)
{
...
...
@@ -70,7 +90,7 @@ public class MainActivity extends AppCompatActivity {
int
id
=
IDmap
.
get
(
i
);
// Get reminder from reminder database using id
Reminder
temp
=
rb
.
getReminder
(
id
);
Reminder
DO
temp
=
rb
.
getReminder
(
id
);
// Delete reminder
rb
.
deleteReminder
(
temp
);
// Remove reminder from recycler view
...
...
@@ -93,7 +113,7 @@ public class MainActivity extends AppCompatActivity {
// To check is there are saved reminders
// If there are no reminders display a message asking the user to create reminders
List
<
Reminder
>
mTest
=
rb
.
getAllReminders
();
List
<
Reminder
DO
>
mTest
=
rb
.
getAllReminders
();
if
(
mTest
.
isEmpty
())
{
mNoReminderView
.
setVisibility
(
View
.
VISIBLE
);
...
...
@@ -123,6 +143,34 @@ public class MainActivity extends AppCompatActivity {
super
.
onCreate
(
savedInstanceState
);
setContentView
(
R
.
layout
.
activity_main
);
//Routine : check user Authentication
firebaseDatabase
=
FirebaseDatabase
.
getInstance
();
firebaseAuth
=
FirebaseAuth
.
getInstance
();
FirebaseUser
user
=
firebaseAuth
.
getCurrentUser
();
authStateListener
=
new
FirebaseAuth
.
AuthStateListener
()
{
@Override
public
void
onAuthStateChanged
(
@NonNull
FirebaseAuth
firebaseAuth
)
{
FirebaseUser
user
=
firebaseAuth
.
getCurrentUser
();
if
(
user
!=
null
){
//User is signed in
reminderDatabaseReference
=
firebaseDatabase
.
getReference
().
child
(
"reminders"
).
child
(
user
.
getUid
());
Toast
.
makeText
(
MainActivity
.
this
,
"You're now signed in.\nWelcome to Talking ReminderDO!"
,
Toast
.
LENGTH_SHORT
).
show
();
attachDatabaseReadListener
();
}
else
{
//User is signed out
startActivityForResult
(
AuthUI
.
getInstance
()
.
createSignInIntentBuilder
()
.
setIsSmartLockEnabled
(
false
)
.
setAvailableProviders
(
Arrays
.
asList
(
new
AuthUI
.
IdpConfig
.
GoogleBuilder
().
build
(),
new
AuthUI
.
IdpConfig
.
EmailBuilder
().
build
()))
.
build
(),
RC_SIGN_IN
);
}
}
};
// Initialize reminder database
rb
=
new
ReminderDatabase
(
getApplicationContext
());
...
...
@@ -134,7 +182,7 @@ public class MainActivity extends AppCompatActivity {
// To check is there are saved reminders
// If there are no reminders display a message asking the user to create reminders
List
<
Reminder
>
mTest
=
rb
.
getAllReminders
();
List
<
Reminder
DO
>
mTest
=
rb
.
getAllReminders
();
if
(
mTest
.
isEmpty
())
{
mNoReminderView
.
setVisibility
(
View
.
VISIBLE
);
...
...
@@ -164,6 +212,50 @@ public class MainActivity extends AppCompatActivity {
mAlarmReceiver
=
new
AlarmReceiver
();
}
//Private Helper methods
private
void
attachDatabaseReadListener
(){
//TODO Attaching Listener to ChildEventListener
if
(
dbChildEventListener
==
null
)
{
// Only now create new Event Listener
dbChildEventListener
=
new
ChildEventListener
()
{
@Override
public
void
onChildAdded
(
@NonNull
DataSnapshot
dataSnapshot
,
@Nullable
String
s
)
{
ReminderDO
reminderObject
=
dataSnapshot
.
getValue
(
ReminderDO
.
class
);
reminderDOArrayList
.
add
(
reminderObject
);
}
@Override
public
void
onChildChanged
(
@NonNull
DataSnapshot
dataSnapshot
,
@Nullable
String
s
)
{
}
@Override
public
void
onChildRemoved
(
@NonNull
DataSnapshot
dataSnapshot
)
{
}
@Override
public
void
onChildMoved
(
@NonNull
DataSnapshot
dataSnapshot
,
@Nullable
String
s
)
{
}
@Override
public
void
onCancelled
(
@NonNull
DatabaseError
databaseError
)
{
}
};
}
reminderDatabaseReference
.
addChildEventListener
(
dbChildEventListener
);
}
private
void
detachDatabaseReadListener
(){
if
(
dbChildEventListener
!=
null
)
{
reminderDatabaseReference
.
removeEventListener
(
dbChildEventListener
);
dbChildEventListener
=
null
;
}
}
@Override
protected
void
onPause
(){
super
.
onPause
();
if
(
authStateListener
!=
null
)
{
firebaseAuth
.
removeAuthStateListener
(
authStateListener
);
}
detachDatabaseReadListener
();
//reminderAdapter.clear();
}
// Create context menu for long press actions
@Override
public
void
onCreateContextMenu
(
ContextMenu
menu
,
View
v
,
ContextMenu
.
ContextMenuInfo
menuInfo
)
{
...
...
@@ -185,6 +277,18 @@ public class MainActivity extends AppCompatActivity {
public
void
onActivityResult
(
int
requestCode
,
int
resultCode
,
Intent
data
)
{
super
.
onActivityResult
(
requestCode
,
resultCode
,
data
);
mAdapter
.
setItemCount
(
getDefaultItemCount
());
if
(
requestCode
==
RC_SIGN_IN
){
if
(
resultCode
==
RESULT_OK
){
Toast
.
makeText
(
this
,
"Signed in"
,
Toast
.
LENGTH_SHORT
);
startActivity
(
new
Intent
(
MainActivity
.
this
,
ReminderAddActivity
.
class
));
}
else
if
(
requestCode
==
RESULT_CANCELED
){
Toast
.
makeText
(
this
,
"Sign in cancelled"
,
Toast
.
LENGTH_SHORT
);
finish
();
}
}
}
// Recreate recycler view
...
...
@@ -192,10 +296,10 @@ public class MainActivity extends AppCompatActivity {
@Override
public
void
onResume
()
{
super
.
onResume
();
firebaseAuth
.
addAuthStateListener
(
authStateListener
);
// To check is there are saved reminders
// If there are no reminders display a message asking the user to create reminders
List
<
Reminder
>
mTest
=
rb
.
getAllReminders
();
List
<
Reminder
DO
>
mTest
=
rb
.
getAllReminders
();
if
(
mTest
.
isEmpty
())
{
mNoReminderView
.
setVisibility
(
View
.
VISIBLE
);
...
...
@@ -215,28 +319,27 @@ public class MainActivity extends AppCompatActivity {
return
100
;
}
// Create menu
/**
* Main menu actions
* @param menu
* @return
*/
@Override
public
boolean
onCreateOptionsMenu
(
Menu
menu
)
{
getMenuInflater
().
inflate
(
R
.
menu
.
main_menu
,
menu
);
return
true
;
}
// Setup menu
// @Override
// public boolean onOptionsItemSelected(MenuItem item) {
// switch (item.getItemId()) {
// // start licenses activity
// case R.id.action_licenses:
// Intent intent = new Intent(this, LicencesActivity.class);
// startActivity(intent);
// return true;
//
// default:
// return super.onOptionsItemSelected(item);
// }
// }
@Override
public
boolean
onOptionsItemSelected
(
MenuItem
item
)
{
switch
(
item
.
getItemId
()){
case
R
.
id
.
sign_out
:
//sign out
AuthUI
.
getInstance
().
signOut
(
this
);
return
true
;
default
:
return
super
.
onOptionsItemSelected
(
item
);
}
}
// Adapter class for recycler view
...
...
@@ -296,8 +399,8 @@ public class MainActivity extends AppCompatActivity {
public
List
<
ReminderItem
>
generateData
(
int
count
)
{
ArrayList
<
SimpleAdapter
.
ReminderItem
>
items
=
new
ArrayList
<>();
// Get all reminder
s
from the database
List
<
Reminder
>
reminders
=
rb
.
getAllReminders
();
// Get all reminder
DOS
from the database
List
<
Reminder
DO
>
reminderDOS
=
rb
.
getAllReminders
();
// Initialize lists
List
<
String
>
Titles
=
new
ArrayList
<>();
...
...
@@ -309,15 +412,15 @@ public class MainActivity extends AppCompatActivity {
List
<
Integer
>
IDList
=
new
ArrayList
<>();
List
<
DateTimeSorter
>
DateTimeSortList
=
new
ArrayList
<>();
// Add details of all reminder
s
in their respective lists
for
(
Reminder
r
:
reminders
)
{
Titles
.
add
(
r
.
getTitle
());
DateAndTime
.
add
(
r
.
getDate
()
+
" "
+
r
.
getTime
());
Repeats
.
add
(
r
.
getRepeat
());
RepeatNos
.
add
(
r
.
getRepeatNo
());
RepeatTypes
.
add
(
r
.
getRepeatType
());
Actives
.
add
(
r
.
getActive
());
IDList
.
add
(
r
.
getID
());
// Add details of all reminder
DOS
in their respective lists
for
(
Reminder
DO
reminderDO
:
reminderDOS
)
{
Titles
.
add
(
r
eminderDO
.
getTitle
());
DateAndTime
.
add
(
r
eminderDO
.
getDate
()
+
" "
+
reminderDO
.
getTime
());
Repeats
.
add
(
r
eminderDO
.
getRepeat
());
RepeatNos
.
add
(
r
eminderDO
.
getRepeatNo
());
RepeatTypes
.
add
(
r
eminderDO
.
getRepeatType
());
Actives
.
add
(
r
eminderDO
.
getActive
());
IDList
.
add
(
r
eminderDO
.
getID
());
}
int
key
=
0
;
...
...
app/src/main/java/com/sudogeeks/talking_reminder/NotificationHelper.java
View file @
8c87a0cf
...
...
@@ -36,10 +36,10 @@ public class NotificationHelper extends ContextWrapper {
}
int
mReceivedID
=
Integer
.
parseInt
(
intent
.
getStringExtra
(
ReminderEditActivity
.
EXTRA_REMINDER_ID
));
//
//Get notification title from Reminder Database
//Get notification title from Reminder
DO
Database
ReminderDatabase
rb
=
new
ReminderDatabase
(
base
);
Reminder
reminder
=
rb
.
getReminder
(
mReceivedID
);
mTitle
=
reminder
.
getTitle
();
Reminder
DO
reminderDO
=
rb
.
getReminder
(
mReceivedID
);
mTitle
=
reminder
DO
.
getTitle
();
// Create intent to open ReminderEditActivity on notification click
Intent
editIntent
=
new
Intent
(
base
,
ReminderEditActivity
.
class
);
...
...
app/src/main/java/com/sudogeeks/talking_reminder/ReminderAddActivity.java
View file @
8c87a0cf
...
...
@@ -31,6 +31,10 @@ import androidx.core.content.ContextCompat;
import
androidx.core.content.FileProvider
;
import
com.google.android.material.floatingactionbutton.FloatingActionButton
;
import
com.google.firebase.auth.FirebaseAuth
;
import
com.google.firebase.auth.FirebaseUser
;
import
com.google.firebase.database.DatabaseReference
;
import
com.google.firebase.database.FirebaseDatabase
;
import
com.google.gson.Gson
;
import
com.google.gson.GsonBuilder
;
...
...
@@ -71,6 +75,10 @@ public class ReminderAddActivity extends AppCompatActivity {
private
String
mRepeatType
;
private
String
mActive
;
private
FirebaseAuth
firebaseAuth
=
FirebaseAuth
.
getInstance
();
private
FirebaseDatabase
firebaseDatabase
=
FirebaseDatabase
.
getInstance
();
private
DatabaseReference
dbReference
=
firebaseDatabase
.
getReference
().
child
(
"reminders"
);
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
...
...
@@ -109,7 +117,7 @@ public class ReminderAddActivity extends AppCompatActivity {
mDate
=
mDay
+
"/"
+
mMonth
+
"/"
+
mYear
;
mTime
=
mHour
+
":"
+
mMinute
;
// Setup Reminder Title EditText
// Setup Reminder
DO
Title EditText
mTitleText
.
addTextChangedListener
(
new
TextWatcher
()
{
@Override
...
...
@@ -358,16 +366,16 @@ public class ReminderAddActivity extends AppCompatActivity {
mRepeatNoText = (TextView) findViewById(R.id.set_repeat_no);
mRepeatTypeText = (TextView) findViewById(R.id.set_repeat_type);
*/
Reminder
talkingReminder
=
new
Reminder
();
talkingReminder
.
setTitle
(
mTitle
);
talkingReminder
.
setDate
(
mDate
);
talkingReminder
.
setTime
(
mTime
);
talkingReminder
.
setRepeat
(
mRepeat
);
talkingReminder
.
setRepeatNo
(
mRepeatNo
);
talkingReminder
.
setRepeatType
(
mRepeatType
);
Reminder
DO
talkingReminderDO
=
new
ReminderDO
();
talkingReminder
DO
.
setTitle
(
mTitle
);
talkingReminder
DO
.
setDate
(
mDate
);
talkingReminder
DO
.
setTime
(
mTime
);
talkingReminder
DO
.
setRepeat
(
mRepeat
);
talkingReminder
DO
.
setRepeatNo
(
mRepeatNo
);
talkingReminder
DO
.
setRepeatType
(
mRepeatType
);
Gson
gson
=
new
GsonBuilder
().
setPrettyPrinting
().
create
();
//String fileName=Environment.getExternalStorageDirectory()+"talkingReminder.json";
//String fileName=Environment.getExternalStorageDirectory()+"talkingReminder
DO
.json";
//First write the data to a temporary file
FileOutputStream
outputStream
;
...
...
@@ -384,7 +392,7 @@ public class ReminderAddActivity extends AppCompatActivity {
}
try
{
String
fileContents
=
gson
.
toJson
(
talkingReminder
);
String
fileContents
=
gson
.
toJson
(
talkingReminder
DO
);
outputStream
=
openFileOutput
(
filename
,
Context
.
MODE_PRIVATE
);
outputStream
.
write
(
fileContents
.
getBytes
());
outputStream
.
close
();
...
...
@@ -403,8 +411,16 @@ public class ReminderAddActivity extends AppCompatActivity {
public
void
saveReminder
()
{
ReminderDatabase
rb
=
new
ReminderDatabase
(
this
);
// Creating Reminder
int
ID
=
rb
.
addReminder
(
new
Reminder
(
mTitle
,
mDate
,
mTime
,
mRepeat
,
mRepeatNo
,
mRepeatType
,
mActive
));
// Creating ReminderDO
int
ID
=
rb
.
addReminder
(
new
ReminderDO
(
mTitle
,
mDate
,
mTime
,
mRepeat
,
mRepeatNo
,
mRepeatType
,
mActive
));
//Storing Reminders in firebase database
ReminderDO
reminderDO
=
new
ReminderDO
(
mTitle
,
mDate
,
mTime
,
mRepeat
,
mRepeatNo
,
mRepeatType
,
mActive
);
FirebaseUser
user
=
firebaseAuth
.
getCurrentUser
();
reminderDO
.
setOwnerID
(
user
.
getEmail
());
reminderDO
.
setReceiverID
(
"null"
);
dbReference
.
child
(
user
.
getUid
()).
push
().
setValue
(
reminderDO
);
// Set up calender for creating the notification
mCalendar
.
set
(
Calendar
.
MONTH
,
--
mMonth
);
...
...
@@ -473,7 +489,7 @@ public class ReminderAddActivity extends AppCompatActivity {
mTitleText
.
setText
(
mTitle
);
if
(
mTitleText
.
getText
().
toString
().
trim
().
length
()
==
0
)
mTitleText
.
setError
(
"Reminder Title cannot be blank!"
);
mTitleText
.
setError
(
"Reminder
DO
Title cannot be blank!"
);
else
{
saveReminder
();
...
...
app/src/main/java/com/sudogeeks/talking_reminder/ReminderDO.java
View file @
8c87a0cf
package
com.sudogeeks.talking_reminder
;
// Reminder class
public
class
Reminder
{
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.ToString
;
// ReminderDO class
//@Data
@Data
public
class
ReminderDO
{
private
int
mID
;
private
String
mTitle
;
private
String
mDate
;
...
...
@@ -10,9 +16,11 @@ public class Reminder {
private
String
mRepeatNo
;
private
String
mRepeatType
;
private
String
mActive
;
private
String
ownerID
=
null
;
//Email Id of the owner/creater of the reminder
private
String
receiverID
=
null
;
//Email Id of the receiver of the reminder;
public
Reminder
(
int
ID
,
String
Title
,
String
Date
,
String
Time
,
String
Repeat
,
String
RepeatNo
,
String
RepeatType
,
String
Active
)
{
public
Reminder
DO
(
int
ID
,
String
Title
,
String
Date
,
String
Time
,
String
Repeat
,
String
RepeatNo
,
String
RepeatType
,
String
Active
)
{
mID
=
ID
;
mTitle
=
Title
;
mDate
=
Date
;
...
...
@@ -23,7 +31,7 @@ public class Reminder {
mActive
=
Active
;
}
public
Reminder
(
String
Title
,
String
Date
,
String
Time
,
String
Repeat
,
String
RepeatNo
,
String
RepeatType
,
String
Active
)
{
public
Reminder
DO
(
String
Title
,
String
Date
,
String
Time
,
String
Repeat
,
String
RepeatNo
,
String
RepeatType
,
String
Active
)
{
mTitle
=
Title
;
mDate
=
Date
;
mTime
=
Time
;
...
...
@@ -33,7 +41,23 @@ public class Reminder {
mActive
=
Active
;
}
public
Reminder
()
{
ReminderDO
()
{
}
public
String
getOwnerID
()
{
return
ownerID
;
}
public
void
setOwnerID
(
String
ownerID
)
{
this
.
ownerID
=
ownerID
;
}
public
String
getReceiverID
()
{
return
receiverID
;
}
public
void
setReceiverID
(
String
receiverID
)
{
this
.
receiverID
=
receiverID
;
}
public
int
getID
()
{
...
...
app/src/main/java/com/sudogeeks/talking_reminder/ReminderDatabase.java
View file @
8c87a0cf
...
...
@@ -62,18 +62,18 @@ public class ReminderDatabase extends SQLiteOpenHelper {
onCreate
(
db
);
}
// Adding new Reminder
public
int
addReminder
(
Reminder
reminder
)
{
// Adding new Reminder
DO
public
int
addReminder
(
Reminder
DO
reminderDO
)
{
SQLiteDatabase
db
=
this
.
getWritableDatabase
();
ContentValues
values
=
new
ContentValues
();
values
.
put
(
KEY_TITLE
,
reminder
.
getTitle
());
values
.
put
(
KEY_DATE
,
reminder
.
getDate
());
values
.
put
(
KEY_TIME
,
reminder
.
getTime
());
values
.
put
(
KEY_REPEAT
,
reminder
.
getRepeat
());
values
.
put
(
KEY_REPEAT_NO
,
reminder
.
getRepeatNo
());
values
.
put
(
KEY_REPEAT_TYPE
,
reminder
.
getRepeatType
());
values
.
put
(
KEY_ACTIVE
,
reminder
.
getActive
());
values
.
put
(
KEY_TITLE
,
reminder
DO
.
getTitle
());
values
.
put
(
KEY_DATE
,
reminder
DO
.
getDate
());
values
.
put
(
KEY_TIME
,
reminder
DO
.
getTime
());
values
.
put
(
KEY_REPEAT
,
reminder
DO
.
getRepeat
());
values
.
put
(
KEY_REPEAT_NO
,
reminder
DO
.
getRepeatNo
());
values
.
put
(
KEY_REPEAT_TYPE
,
reminder
DO
.
getRepeatType
());
values
.
put
(
KEY_ACTIVE
,
reminder
DO
.
getActive
());
// Inserting Row
long
ID
=
db
.
insert
(
TABLE_REMINDERS
,
null
,
values
);
...
...
@@ -81,8 +81,8 @@ public class ReminderDatabase extends SQLiteOpenHelper {
return
(
int
)
ID
;
}
// Getting single Reminder
public
Reminder
getReminder
(
int
id
)
{
// Getting single Reminder
DO
public
Reminder
DO
getReminder
(
int
id
)
{
SQLiteDatabase
db
=
this
.
getReadableDatabase
();
Cursor
cursor
=
db
.
query
(
TABLE_REMINDERS
,
new
String
[]
...
...
@@ -102,16 +102,16 @@ public class ReminderDatabase extends SQLiteOpenHelper {
if
(
cursor
!=
null
)
cursor
.
moveToFirst
();
Reminder
reminder
=
new
Reminder
(
Integer
.
parseInt
(
cursor
.
getString
(
0
)),
cursor
.
getString
(
1
),
Reminder
DO
reminderDO
=
new
ReminderDO
(
Integer
.
parseInt
(
cursor
.
getString
(
0
)),
cursor
.
getString
(
1
),
cursor
.
getString
(
2
),
cursor
.
getString
(
3
),
cursor
.
getString
(
4
),
cursor
.
getString
(
5
),
cursor
.
getString
(
6
),
cursor
.
getString
(
7
));
return
reminder
;
return
reminder
DO
;
}
// Getting all Reminders
public
List
<
Reminder
>
getAllReminders
()
{
List
<
Reminder
>
reminder
List
=
new
ArrayList
<>();
public
List
<
Reminder
DO
>
getAllReminders
()
{
List
<
Reminder
DO
>
reminderDO
List
=
new
ArrayList
<>();
// Select all Query
String
selectQuery
=
"SELECT * FROM "
+
TABLE_REMINDERS
;
...
...
@@ -122,21 +122,21 @@ public class ReminderDatabase extends SQLiteOpenHelper {
// Looping through all rows and adding to list
if
(
cursor
.
moveToFirst
())
{
do
{
Reminder
reminder
=
new
Reminder
();
reminder
.
setID
(
Integer
.
parseInt
(
cursor
.
getString
(
0
)));
reminder
.
setTitle
(
cursor
.
getString
(
1
));
reminder
.
setDate
(
cursor
.
getString
(
2
));
reminder
.
setTime
(
cursor
.
getString
(
3
));
reminder
.
setRepeat
(
cursor
.
getString
(
4
));
reminder
.
setRepeatNo
(
cursor
.
getString
(
5
));
reminder
.
setRepeatType
(
cursor
.
getString
(
6
));
reminder
.
setActive
(
cursor
.
getString
(
7
));
Reminder
DO
reminderDO
=
new
ReminderDO
();
reminder
DO
.
setID
(
Integer
.
parseInt
(
cursor
.
getString
(
0
)));
reminder
DO
.
setTitle
(
cursor
.
getString
(
1
));
reminder
DO
.
setDate
(
cursor
.
getString
(
2
));
reminder
DO
.
setTime
(
cursor
.
getString
(
3
));
reminder
DO
.
setRepeat
(
cursor
.
getString
(
4
));
reminder
DO
.
setRepeatNo
(
cursor
.
getString
(
5
));
reminder
DO
.
setRepeatType
(
cursor
.
getString
(
6
));
reminder
DO
.
setActive
(
cursor
.
getString
(
7
));
// Adding Reminders to list
reminder
List
.
add
(
reminder
);
reminder
DOList
.
add
(
reminderDO
);
}
while
(
cursor
.
moveToNext
());
}
return
reminderList
;
return
reminder
DO
List
;
}
// Getting Reminders Count
...
...
@@ -149,28 +149,28 @@ public class ReminderDatabase extends SQLiteOpenHelper {
return
cursor
.
getCount
();
}
// Updating single Reminder
public
int
updateReminder
(
Reminder
reminder
)
{
// Updating single Reminder
DO
public
int
updateReminder
(
Reminder
DO
reminderDO
)
{
SQLiteDatabase
db
=
this
.
getWritableDatabase
();
ContentValues
values
=
new
ContentValues
();
values
.
put
(
KEY_TITLE
,
reminder
.
getTitle
());
values
.
put
(
KEY_DATE
,
reminder
.
getDate
());
values
.
put
(
KEY_TIME
,
reminder
.
getTime
());
values
.
put
(
KEY_REPEAT
,
reminder
.
getRepeat
());
values
.
put
(
KEY_REPEAT_NO
,
reminder
.
getRepeatNo
());
values
.
put
(
KEY_REPEAT_TYPE
,
reminder
.
getRepeatType
());
values
.
put
(
KEY_ACTIVE
,
reminder
.
getActive
());
values
.
put
(
KEY_TITLE
,
reminder
DO
.
getTitle
());
values
.
put
(
KEY_DATE
,
reminder
DO
.
getDate
());
values
.
put
(
KEY_TIME
,
reminder
DO
.
getTime
());
values
.
put
(
KEY_REPEAT
,
reminder
DO
.
getRepeat
());
values
.
put
(
KEY_REPEAT_NO
,
reminder
DO
.
getRepeatNo
());
values
.
put
(
KEY_REPEAT_TYPE
,
reminder
DO
.
getRepeatType
());
values
.
put
(
KEY_ACTIVE
,
reminder
DO
.
getActive
());
// Updating row
return
db
.
update
(
TABLE_REMINDERS
,
values
,
KEY_ID
+
"=?"
,
new
String
[]{
String
.
valueOf
(
reminder
.
getID
())});
new
String
[]{
String
.
valueOf
(
reminder
DO
.
getID
())});
}
// Deleting single Reminder
public
void
deleteReminder
(
Reminder
reminder
)
{
// Deleting single Reminder
DO
public
void
deleteReminder
(
Reminder
DO
reminderDO
)
{
SQLiteDatabase
db
=
this
.
getWritableDatabase
();
db
.
delete
(
TABLE_REMINDERS
,
KEY_ID
+
"=?"
,
new
String
[]{
String
.
valueOf
(
reminder
.
getID
())});
new
String
[]{
String
.
valueOf
(
reminder
DO
.
getID
())});
db
.
close
();
}
}
app/src/main/java/com/sudogeeks/talking_reminder/ReminderEditActivity.java
View file @
8c87a0cf
...
...
@@ -64,7 +64,7 @@ public class ReminderEditActivity extends AppCompatActivity {
private
int
mYear
,
mMonth
,
mHour
,
mMinute
,
mDay
;
private
long
mRepeatTime
;
private
Calendar
mCalendar
;
private
Reminder
mReceivedReminder
;
private
Reminder
DO
mReceivedReminderDO
;
private
ReminderDatabase
rb
;
private
AlarmReceiver
mAlarmReceiver
;
...
...
@@ -91,7 +91,7 @@ public class ReminderEditActivity extends AppCompatActivity {
getSupportActionBar
().
setDisplayHomeAsUpEnabled
(
true
);
getSupportActionBar
().
setHomeButtonEnabled
(
true
);
// Setup Reminder Title EditText
// Setup Reminder
DO
Title EditText
mTitleText
.
addTextChangedListener
(
new
TextWatcher
()
{
@Override
public
void
beforeTextChanged
(
CharSequence
s
,
int
start
,
int
count
,
int
after
)
{
...
...
@@ -116,24 +116,24 @@ public class ReminderEditActivity extends AppCompatActivity {
/*Intent intent = getIntent();
if(intent.getType().equals("text/"+Utility.FILE_EXTENSION)){
mReceivedReminder.setTitle(intent.getStringExtra("mTitle"));
mReceivedReminder
DO
.setTitle(intent.getStringExtra("mTitle"));
System.out.println("**********************************");
System.out.println(mReceivedReminder.getTitle());
System.out.println(mReceivedReminder
DO
.getTitle());
System.out.println("**********************************");
}
else {*/
// Get reminder id from intent
mReceivedReminder
=
rb
.
getReminder
(
mReceivedID
);
mReceivedReminder
DO
=
rb
.
getReminder
(
mReceivedID
);
//}
// Get values from reminder
mTitle
=
mReceivedReminder
.
getTitle
();
mDate
=
mReceivedReminder
.
getDate
();
mTime
=
mReceivedReminder
.
getTime
();
mRepeat
=
mReceivedReminder
.
getRepeat
();
mRepeatNo
=
mReceivedReminder
.
getRepeatNo
();
mRepeatType
=
mReceivedReminder
.
getRepeatType
();
mActive
=
mReceivedReminder
.
getActive
();
mTitle
=
mReceivedReminder
DO
.
getTitle
();
mDate
=
mReceivedReminder
DO
.
getDate
();
mTime
=
mReceivedReminder
DO
.
getTime
();
mRepeat
=
mReceivedReminder
DO
.
getRepeat
();
mRepeatNo
=
mReceivedReminder
DO
.
getRepeatNo
();
mRepeatType
=
mReceivedReminder
DO
.
getRepeatType
();
mActive
=
mReceivedReminder
DO
.
getActive
();
// Setup TextViews using reminder values
mTitleText
.
setText
(
mTitle
);
...
...
@@ -381,16 +381,16 @@ public class ReminderEditActivity extends AppCompatActivity {
// On clicking the update button
public
void
updateReminder
()
{
// Set new values in the reminder
mReceivedReminder
.
setTitle
(
mTitle
);
mReceivedReminder
.
setDate
(
mDate
);
mReceivedReminder
.
setTime
(
mTime
);
mReceivedReminder
.
setRepeat
(
mRepeat
);
mReceivedReminder
.
setRepeatNo
(
mRepeatNo
);
mReceivedReminder
.
setRepeatType
(
mRepeatType
);
mReceivedReminder
.
setActive
(
mActive
);
mReceivedReminder
DO
.
setTitle
(
mTitle
);
mReceivedReminder
DO
.
setDate
(
mDate
);
mReceivedReminder
DO
.
setTime
(
mTime
);
mReceivedReminder
DO
.
setRepeat
(
mRepeat
);
mReceivedReminder
DO
.
setRepeatNo
(
mRepeatNo
);
mReceivedReminder
DO
.
setRepeatType
(
mRepeatType
);
mReceivedReminder
DO
.
setActive
(
mActive
);
// Update reminder
rb
.
updateReminder
(
mReceivedReminder
);
rb
.
updateReminder
(
mReceivedReminder
DO
);
// Set up calender for creating the notification
mCalendar
.
set
(
Calendar
.
MONTH
,
--
mMonth
);
...
...
@@ -461,7 +461,7 @@ public class ReminderEditActivity extends AppCompatActivity {
mTitleText
.
setText
(
mTitle
);
if
(
mTitleText
.
getText
().
toString
().
length
()
==
0
)
mTitleText
.
setError
(
"Reminder Title cannot be blank!"
);
mTitleText
.
setError
(
"Reminder
DO
Title cannot be blank!"
);
else
{
updateReminder
();
...
...
app/src/main/java/com/sudogeeks/talking_reminder/ReminderReceiveActivity.java
View file @
8c87a0cf
...
...
@@ -75,7 +75,7 @@ public class ReminderReceiveActivity extends AppCompatActivity {
try
{
JSONObject
obj
=
new
JSONObject
(
reminderJson
.
toString
());
//Reminder
talkingReminder=new Reminder
();
//Reminder
DO talkingReminder=new ReminderDO
();
mTitleText
=
findViewById
(
R
.
id
.
reminder_title
);
mDateText
=
findViewById
(
R
.
id
.
set_date
);
mTimeText
=
findViewById
(
R
.
id
.
set_time
);
...
...
@@ -102,7 +102,7 @@ public class ReminderReceiveActivity extends AppCompatActivity {
/*Intent senderIntent = new Intent(context, ReminderEditActivity.class);
senderIntent.putExtra("received", true);
senderIntent.putExtra("mTitle", "First Receive Reminder test");
senderIntent.putExtra("mTitle", "First Receive Reminder
DO
test");
startActivity(senderIntent);*/
}
}
...
...
@@ -110,8 +110,8 @@ public class ReminderReceiveActivity extends AppCompatActivity {
public
void
saveSendReminder
()
{
ReminderDatabase
rb
=
new
ReminderDatabase
(
this
);
// Creating Reminder
int
ID
=
rb
.
addReminder
(
new
Reminder
(
mTitleText
.
getText
().
toString
(),
mDateText
.
getText
().
toString
(),
mTimeText
.
getText
().
toString
(),
mRepeat
,
mRepeatNoText
.
getText
().
toString
(),
mRepeatTypeText
.
getText
().
toString
(),
mActive
));
// Creating Reminder
DO
int
ID
=
rb
.
addReminder
(
new
Reminder
DO
(
mTitleText
.
getText
().
toString
(),
mDateText
.
getText
().
toString
(),
mTimeText
.
getText
().
toString
(),
mRepeat
,
mRepeatNoText
.
getText
().
toString
(),
mRepeatTypeText
.
getText
().
toString
(),
mActive
));
// Set up calender for creating the notification
...
...
app/src/main/res/menu/main_menu.xml
View file @
8c87a0cf
<menu
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
tools:context=
"com.blanyal.talking_reminder.MainActivity"
>
<!-- <item android:id="@+id/action_licenses"-->
<!-- android:title="@string/title_activity_licenses"-->
<!-- app:showAsAction="never"/>-->
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
tools:context=
"com.sudogeeks.talking_reminder.MainActivity"
>
<item
android:id=
"@+id/sign_out"
android:orderInCategory=
"100"
android:title=
"@string/sign_out"
app:showAsAction=
"never"
/>
</menu>
\ No newline at end of file
app/src/main/res/values/colors.xml
View file @
8c87a0cf
...
...
@@ -3,4 +3,6 @@
<color
name=
"primary"
>
#008577
</color>
<color
name=
"primary_dark"
>
#00574B
</color>
<color
name=
"accent"
>
#D81B60
</color>
<color
name=
"textheader"
>
#ffffff
</color>
<color
name=
"textbody"
>
#000000
</color>
</resources>
\ No newline at end of file
app/src/main/res/values/strings.xml
View file @
8c87a0cf
...
...
@@ -16,6 +16,7 @@
<string
name=
"action_discard_reminder"
>
Discard Reminder
</string>
<string
name=
"action_save_reminder"
>
Save Reminder
</string>
<string
name=
"no_reminders"
>
Click on the plus button below to begin creating your reminders!
</string>
<string
name=
"no_reminders"
>
Click on the plus button below to begin creating your reminderDOS!
</string>
<string
name=
"sign_out"
>
sign_out
</string>
</resources>
app/src/main/res/values/styles.xml
View file @
8c87a0cf
<resources>
<!-- Base application theme. -->
<style
name=
"AppTheme"
parent=
"AppTheme.Base"
/
>
<!-- <style name="AppTheme" parent="AppTheme.Base"/>--
>
<style
name=
"AppTheme.NoActionBar"
>
<item
name=
"windowActionBar"
>
false
</item>
...
...
@@ -17,5 +17,4 @@
<item
name=
"android:windowNoTitle"
>
true
</item>
<item
name=
"windowActionModeOverlay"
>
true
</item>
</style>
</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