Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
yotta
/
pictogram
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
60
Merge Requests
0
Pipelines
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
56f0de79
authored
Aug 28, 2016
by
Fernando Martínez Santiago
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
PCB bug fixex (issue #542)
parent
1ad9f904
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
29 additions
and
573 deletions
android/Pictogram/app/src/main/java/com/yottacode/pictogram/gui/CustomList.java
android/Pictogram/app/src/main/java/com/yottacode/pictogram/gui/LoginActivity.java
android/Pictogram/app/src/main/java/com/yottacode/pictogram/gui/MainActivity.java
android/Pictogram/app/src/main/java/com/yottacode/pictogram/gui/PictoGridAdapter.java
android/Pictogram/app/src/main/java/com/yottacode/pictogram/gui/PictoItemViewGenerator.java
android/Pictogram/app/src/main/java/com/yottacode/pictogram/gui/PictogramActivity.java
android/Pictogram/app/src/main/java/com/yottacode/pictogram/gui/SplashScreenActivity.java
android/Pictogram/app/src/main/java/com/yottacode/pictogram/gui/StudentFragmentGrid.java
android/Pictogram/app/src/main/java/com/yottacode/pictogram/gui/TapeAdapter.java
android/Pictogram/commonlibrary/src/main/java/com/yottacode/pictogram/action/UnsubscribeAction.java
android/Pictogram/app/src/main/java/com/yottacode/pictogram/gui/CustomList.java
deleted
100644 → 0
View file @
1ad9f904
package
com
.
yottacode
.
pictogram
.
gui
;
import
android.app.Activity
;
import
android.graphics.Bitmap
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.widget.ArrayAdapter
;
import
android.widget.ImageView
;
import
android.widget.TextView
;
import
com.yottacode.pictogram.R
;
import
java.util.Vector
;
/**
* Creates a View for each student on the list with a photo and his/her name.
* It uses list_single.xml for the layout creation.
*/
public
class
CustomList
extends
ArrayAdapter
<
String
>{
private
final
Activity
context
;
private
final
String
[]
name_surname
;
private
final
Vector
<
Bitmap
>
images
;
/**
* @param context Context used for rendering the view
* @param name_surname List of students' names
* @param images List of students' photos
*/
public
CustomList
(
Activity
context
,
String
[]
name_surname
,
Vector
<
Bitmap
>
images
)
{
super
(
context
,
R
.
layout
.
list_single
,
name_surname
);
this
.
context
=
context
;
this
.
name_surname
=
name_surname
;
this
.
images
=
images
;
}
/**
* @param position Student position in the name_surname/images arrays
* @param view @TODO not being used
* @param parent @TODO not being used
* @return The rendered student view
*/
@Override
public
View
getView
(
int
position
,
View
view
,
ViewGroup
parent
)
{
LayoutInflater
inflater
=
context
.
getLayoutInflater
();
View
rowView
=
inflater
.
inflate
(
R
.
layout
.
list_single
,
null
,
true
);
TextView
txtTitle
=
(
TextView
)
rowView
.
findViewById
(
R
.
id
.
loginStudentName
);
ImageView
imageView
=
(
ImageView
)
rowView
.
findViewById
(
R
.
id
.
loginStudentPhoto
);
txtTitle
.
setText
(
name_surname
[
position
]);
//imageView.setImageResource(R.drawable.user);
imageView
.
setImageBitmap
(
images
.
elementAt
(
position
));
return
rowView
;
}
}
\ No newline at end of file
android/Pictogram/app/src/main/java/com/yottacode/pictogram/gui/LoginActivity.java
deleted
100644 → 0
View file @
1ad9f904
package
com
.
yottacode
.
pictogram
.
gui
;
import
android.annotation.TargetApi
;
import
android.content.Intent
;
import
android.os.AsyncTask
;
import
android.support.v4.app.FragmentActivity
;
import
android.os.Build
;
import
android.os.Bundle
;
import
android.util.Log
;
import
android.view.View
;
import
android.view.Window
;
import
android.widget.Button
;
import
android.widget.ImageView
;
import
android.widget.TextView
;
import
com.yottacode.pictogram.R
;
import
com.yottacode.pictogram.net.ImgDownloader
;
import
com.yottacode.pictogram.net.iImgDownloaderListener
;
import
com.yottacode.pictogram.tools.Img
;
import
com.yottacode.pictogram.tools.PCBcontext
;
import
com.yottacode.tools.GUITools
;
import
java.io.IOException
;
import
java.util.Vector
;
/**
* LoginActivity show the login window to select the student and supervisor
* It uses device to read the token value
*/
public
class
LoginActivity
extends
FragmentActivity
{
// String constant for logs
private
final
String
LOG_TAG
=
this
.
getClass
().
getSimpleName
();
// Or .getCanonicalName()
/**
* If there is Internet connection it calls the WS to recover the pairs student-supervisor
* @param savedInstanceState
*/
@TargetApi
(
Build
.
VERSION_CODES
.
LOLLIPOP
)
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
requestWindowFeature
(
Window
.
FEATURE_NO_TITLE
);
setContentView
(
R
.
layout
.
activity_login
);
// Enable logout button
final
Button
logoutButton
=
(
Button
)
findViewById
(
R
.
id
.
loginTopbarLogout
);
logoutButton
.
setEnabled
(
true
);
logoutButton
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
Intent
serialActivity
=
new
Intent
(
getBaseContext
(),
SerialActivity
.
class
);
serialActivity
.
putExtra
(
"resetPrevUser"
,
true
);
startActivity
(
serialActivity
);
}
});
// Set supervisor information on topbar
final
TextView
supervisorFullNameView
=
(
TextView
)
findViewById
(
R
.
id
.
loginTopbarSupervisorFullName
);
final
TextView
supervisorUserNameView
=
(
TextView
)
findViewById
(
R
.
id
.
loginTopbarSupervisorUserName
);
final
ImageView
supervisorPhotoView
=
(
ImageView
)
findViewById
(
R
.
id
.
loginTopbarSupervisorPhoto
);
supervisorFullNameView
.
setText
(
this
.
getIntent
().
getStringExtra
(
"name"
)
+
" "
+
this
.
getIntent
().
getStringExtra
(
"surname"
));
supervisorUserNameView
.
setText
(
this
.
getIntent
().
getStringExtra
(
"email"
));
final
Vector
<
Img
>
imgs
=
new
Vector
<>(
1
);
imgs
.
add
(
new
Img
(
this
.
getIntent
().
getIntExtra
(
"sup_id"
,
-
1
),
this
.
getIntent
().
getStringExtra
(
"pic"
),
Img
.
SUPERVISOR
));
ImgDownloader
downloader
=
new
ImgDownloader
(
this
,
new
iImgDownloaderListener
()
{
@Override
public
void
loadComplete
()
{
try
{
supervisorPhotoView
.
setImageBitmap
(
imgs
.
get
(
0
).
get_bitmap
(
PCBcontext
.
getContext
())
);
supervisorPhotoView
.
invalidate
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
@Override
public
void
loadImg
(
Img
image
)
{}
@Override
public
void
error
(
Exception
e
)
{
GUITools
.
show_alert
(
PCBcontext
.
getContext
(),
R
.
string
.
serverError
,
e
.
getMessage
());
Log
.
e
(
this
.
getClass
().
getCanonicalName
(),
"Server error:"
+
e
.
getLocalizedMessage
());
}
},
ImgDownloader
.
tsource
.
remote
);
downloader
.
executeOnExecutor
(
AsyncTask
.
THREAD_POOL_EXECUTOR
,
imgs
);
}
@Override
protected
void
onResume
()
{
super
.
onResume
();
}
}
android/Pictogram/app/src/main/java/com/yottacode/pictogram/gui/MainActivity.java
deleted
100644 → 0
View file @
1ad9f904
package
com
.
yottacode
.
pictogram
.
gui
;
import
android.app.Activity
;
import
android.content.Intent
;
import
android.os.Bundle
;
import
android.provider.Settings
;
import
android.util.Log
;
import
android.view.KeyEvent
;
import
android.view.Menu
;
import
android.view.MenuItem
;
import
android.view.Window
;
import
android.view.WindowManager
;
import
android.widget.Toast
;
import
com.yottacode.pictogram.R
;
import
com.yottacode.pictogram.dao.Device
;
import
com.yottacode.pictogram.dao.LoginException
;
import
com.yottacode.pictogram.dao.PCBDBHelper
;
import
com.yottacode.pictogram.dao.User
;
import
com.yottacode.pictogram.tools.PCBcontext
;
import
org.json.JSONException
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.Vector
;
public
class
MainActivity
extends
Activity
{
// String constant for logs
private
final
String
LOG_TAG
=
this
.
getClass
().
getSimpleName
();
// Or .getCanonicalName()
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
requestWindowFeature
(
Window
.
FEATURE_NO_TITLE
);
// For deactivating the lock screen (just before setContentView)
getWindow
().
addFlags
(
WindowManager
.
LayoutParams
.
FLAG_DISMISS_KEYGUARD
);
PCBcontext
.
init
(
this
);
Log
.
d
(
LOG_TAG
,
"PCBcontext iniciado."
);
Intent
serialActivity
=
new
Intent
(
this
,
SerialActivity
.
class
);
serialActivity
.
putExtra
(
"resetPrevUser"
,
false
);
startActivity
(
serialActivity
);
}
@Override
protected
void
onDestroy
()
{
super
.
onDestroy
();
PCBcontext
.
getNetService
().
closeNotifyStatus
();
}
@Override
public
boolean
onCreateOptionsMenu
(
Menu
menu
)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater
().
inflate
(
R
.
menu
.
main
,
menu
);
return
true
;
}
@Override
public
boolean
onOptionsItemSelected
(
MenuItem
item
)
{
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int
id
=
item
.
getItemId
();
if
(
id
==
R
.
id
.
action_settings
)
{
return
true
;
}
return
super
.
onOptionsItemSelected
(
item
);
}
}
android/Pictogram/app/src/main/java/com/yottacode/pictogram/gui/PictoGridAdapter.java
deleted
100644 → 0
View file @
1ad9f904
package
com
.
yottacode
.
pictogram
.
gui
;
import
android.annotation.TargetApi
;
import
android.graphics.Bitmap
;
import
android.graphics.BitmapFactory
;
import
android.os.Build
;
import
android.os.Bundle
;
import
android.speech.tts.TextToSpeech
;
import
android.util.Log
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.widget.ArrayAdapter
;
import
android.widget.FrameLayout
;
import
android.widget.GridView
;
import
android.widget.ImageView
;
import
android.widget.RelativeLayout
;
import
com.yottacode.pictogram.R
;
import
com.yottacode.pictogram.dao.Picto
;
import
com.yottacode.pictogram.tools.PCBcontext
;
import
java.io.IOException
;
import
java.util.LinkedList
;
public
class
PictoGridAdapter
extends
ArrayAdapter
{
private
LinkedList
<
Picto
>
pictoLinkedList
;
private
final
String
LOG_TAG
=
this
.
getClass
().
getSimpleName
();
public
PictoGridAdapter
(
LinkedList
<
Picto
>
pictoLinkedList
){
super
(
PCBcontext
.
getContext
(),
PictoItemViewGenerator
.
LAYOUT
,
pictoLinkedList
);
this
.
pictoLinkedList
=
pictoLinkedList
;
}
@Override
public
int
getCount
()
{
return
this
.
pictoLinkedList
.
size
();
}
@Override
public
Picto
getItem
(
int
position
)
{
return
this
.
pictoLinkedList
.
get
(
position
);
}
@Override
public
long
getItemId
(
int
position
)
{
return
0
;
}
public
void
deleteAll
()
{
this
.
pictoLinkedList
.
clear
();
}
@Override
public
View
getView
(
int
position
,
View
convertView
,
ViewGroup
parent
)
{
return
PictoItemViewGenerator
.
getPictoView
(
this
.
pictoLinkedList
.
get
(
position
),
convertView
,
parent
);
}
@TargetApi
(
Build
.
VERSION_CODES
.
LOLLIPOP
)
public
void
ttsPicto
(
Picto
p
,
TextToSpeech
tts
)
{
if
(
p
.
is_enabled
())
{
String
input
=
p
.
get_translation
();
Bundle
params
=
new
Bundle
();
params
.
putString
(
TextToSpeech
.
Engine
.
KEY_PARAM_VOLUME
,
"1"
);
tts
.
speak
(
input
,
TextToSpeech
.
QUEUE_FLUSH
,
params
,
null
);
}
}
}
android/Pictogram/app/src/main/java/com/yottacode/pictogram/gui/PictoItemViewGenerator.java
deleted
100644 → 0
View file @
1ad9f904
package
com
.
yottacode
.
pictogram
.
gui
;
import
android.util.Log
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.widget.FrameLayout
;
import
android.widget.ImageView
;
import
android.widget.RelativeLayout
;
import
com.yottacode.pictogram.R
;
import
com.yottacode.pictogram.dao.Picto
;
import
com.yottacode.pictogram.tools.PCBcontext
;
import
java.io.IOException
;
/**
* This class is used for generating PictoViews which will be inserted inside a picto grid
* or a picto tape.
*/
public
class
PictoItemViewGenerator
{
public
static
final
int
LAYOUT
=
R
.
layout
.
picto_grid_item
;
public
static
View
getPictoView
(
Picto
picto
,
View
convertView
,
ViewGroup
parent
)
{
if
(
convertView
==
null
)
{
convertView
=
LayoutInflater
.
from
(
parent
.
getContext
()).
inflate
(
LAYOUT
,
parent
,
false
);
}
RelativeLayout
layoutWrapper
=
(
RelativeLayout
)
convertView
.
findViewById
(
R
.
id
.
picto_grid_item_layout_wrapper
);
FrameLayout
layout
=
(
FrameLayout
)
convertView
.
findViewById
(
R
.
id
.
picto_grid_item_layout
);
ImageView
pictoImage
=
(
ImageView
)
convertView
.
findViewById
(
R
.
id
.
picto_grid_item_image
);
ImageView
redCrossImage
=
(
ImageView
)
convertView
.
findViewById
(
R
.
id
.
picto_grid_item_redcross
);
layoutWrapper
.
setVisibility
(
View
.
GONE
);
layoutWrapper
.
setBackground
(
null
);
layoutWrapper
.
setAlpha
(
0.25f
);
layout
.
setBackgroundColor
(
convertView
.
getResources
()
.
getColor
(
R
.
color
.
picto_default_background
));
redCrossImage
.
setVisibility
(
View
.
GONE
);
pictoImage
.
setScaleX
(
1.0f
);
pictoImage
.
setScaleY
(
1.0f
);
pictoImage
.
setVisibility
(
View
.
GONE
);
if
(
picto
==
null
)
{
if
(
PCBcontext
.
getPcbdb
().
getCurrentUser
().
is_supervisor
())
{
layoutWrapper
.
setVisibility
(
View
.
VISIBLE
);
layoutWrapper
.
setBackground
(
convertView
.
getResources
()
.
getDrawable
(
R
.
drawable
.
picto_grid_item_border
));
}
}
else
{
if
(!
picto
.
is_invisible
()
&&
!
picto
.
is_disabled
())
{
layoutWrapper
.
setAlpha
(
1.00f
);
}
try
{
pictoImage
.
setImageBitmap
(
picto
.
get_bitmap
(
PCBcontext
.
getContext
()));
if
(!
picto
.
is_invisible
()
||
PCBcontext
.
getPcbdb
().
getCurrentUser
().
is_supervisor
())
{
layoutWrapper
.
setVisibility
(
View
.
VISIBLE
);
pictoImage
.
setVisibility
(
View
.
VISIBLE
);
layoutWrapper
.
setBackground
(
convertView
.
getResources
()
.
getDrawable
(
R
.
drawable
.
picto_grid_item_border
));
if
(
picto
.
is_magnify
())
{
pictoImage
.
setScaleX
(
1.2f
);
pictoImage
.
setScaleY
(
1.2f
);
}
if
(
picto
.
is_disabled
())
{
redCrossImage
.
setVisibility
(
View
.
VISIBLE
);
}
if
(
picto
.
is_category
())
{
layout
.
setBackgroundColor
(
picto
.
get_color
());
}
}
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
return
convertView
;
}
}
android/Pictogram/app/src/main/java/com/yottacode/pictogram/gui/PictogramActivity.java
deleted
100644 → 0
View file @
1ad9f904
This diff is collapsed.
Click to expand it.
android/Pictogram/app/src/main/java/com/yottacode/pictogram/gui/SplashScreenActivity.java
deleted
100644 → 0
View file @
1ad9f904
package
com
.
yottacode
.
pictogram
.
gui
;
import
java.util.Timer
;
import
java.util.TimerTask
;
import
android.app.Activity
;
import
android.content.Intent
;
import
android.content.pm.ActivityInfo
;
import
android.os.Bundle
;
import
android.view.Window
;
import
android.view.WindowManager
;
import
com.yottacode.pictogram.R
;
public
class
SplashScreenActivity
extends
Activity
{
// Set the duration of the splash screen
private
static
final
long
SPLASH_SCREEN_DELAY
=
3000
;
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
// Set landscape orientation
setRequestedOrientation
(
ActivityInfo
.
SCREEN_ORIENTATION_LANDSCAPE
);
// Hide title bar
requestWindowFeature
(
Window
.
FEATURE_NO_TITLE
);
setContentView
(
R
.
layout
.
activity_splash_screen
);
TimerTask
task
=
new
TimerTask
()
{
@Override
public
void
run
()
{
// Start the next activity
Intent
mainIntent
=
new
Intent
().
setClass
(
SplashScreenActivity
.
this
,
MainActivity
.
class
);
startActivity
(
mainIntent
);
// Intent pictogramActivity = new Intent().setClass(
// SplashScreenActivity.this, PictogramActivity.class);
//pictogramActivity.putExtra();
// seguir: hay que pasarle el estudiante y el supervisor, para cargar la colección, etc...
// startActivity(pictogramActivity);
// Close the activity so the user won't able to go back this
// activity pressing Back button
finish
();
}
};
// Simulate a long loading process on application startup.
Timer
timer
=
new
Timer
();
timer
.
schedule
(
task
,
SPLASH_SCREEN_DELAY
);
}
}
\ No newline at end of file
android/Pictogram/app/src/main/java/com/yottacode/pictogram/gui/StudentFragmentGrid.java
deleted
100644 → 0
View file @
1ad9f904
This diff is collapsed.
Click to expand it.
android/Pictogram/app/src/main/java/com/yottacode/pictogram/gui/TapeAdapter.java
deleted
100644 → 0
View file @
1ad9f904
package
com
.
yottacode
.
pictogram
.
gui
;
import
android.annotation.TargetApi
;
import
android.os.Build
;
import
android.os.Bundle
;
import
android.speech.tts.TextToSpeech
;
import
android.speech.tts.UtteranceProgressListener
;
import
android.util.Log
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.widget.BaseAdapter
;
import
android.widget.FrameLayout
;
import
android.widget.ImageView
;
import
com.yottacode.pictogram.R
;
import
com.yottacode.pictogram.dao.Picto
;
import
com.yottacode.pictogram.tools.PCBcontext
;
import
java.util.Iterator
;
import
java.util.LinkedList
;
public
class
TapeAdapter
extends
BaseAdapter
{
//private Context mContext;
private
LinkedList
<
Picto
>
pictoLinkedList
;
public
TapeAdapter
(){
//mContext = c;
pictoLinkedList
=
new
LinkedList
<
Picto
>();
// the list begins empty
}
@Override
public
int
getCount
(){
return
pictoLinkedList
.
size
();
}
public
Picto
getItem
(
int
position
)
{
// este método debería devolver el objeto que esta en esa posición del
// adapter.
return
pictoLinkedList
.
get
(
position
);
}
public
long
getItemId
(
int
position
)
{
// este método debería devolver el id de fila del item que esta en esa
// posición del adapter. No es necesario en este caso más que devolver 0.
return
0
;
}
// AÑADIR ITEM AL ADAPTADOR
public
void
addItem
(
Picto
p
){
pictoLinkedList
.
add
(
p
);
}
// ELIMINAR ITEM DEL ADAPTADOR
public
void
deleteItem
(
int
position
){
pictoLinkedList
.
remove
(
position
);
}
// ELIMINAR el último ITEM DEL ADAPTADOR
public
void
deleteLastView
(){
// Controlar excepcion al intentar eliminar el último cuando no hay elementos
try
{
pictoLinkedList
.
removeLast
();
}
catch
(
ArrayIndexOutOfBoundsException
exception
){
Log
.
e
(
"Excepción"
,
"ArrayIndexOutOfBounds: "
+
exception
.
getMessage
());
}
}
// ELIMINAR TODOS LOS ITEMS DEL ADAPTADOR
public
void
deleteAll
(){
pictoLinkedList
.
clear
();
}
// DEVUELVE TODOS LOS ELEMENTOS
public
LinkedList
<
Picto
>
getAll
(){
return
pictoLinkedList
;
}
// Devuelvo la cadena actual como un String
public
String
getAllAsString
(){
String
complete
=
""
;
Iterator
<
Picto
>
iterator
=
pictoLinkedList
.
iterator
();
while
(
iterator
.
hasNext
())
{
Picto
current
=
iterator
.
next
();
complete
+=
" "
+
current
.
get_translation
();
}
return
complete
;
}
// DEVUELVE último elemento
public
Picto
getLastItem
(){
return
pictoLinkedList
.
getLast
();
}
// Devuelve true o false si tiene o no elementos la lista de pictos
public
boolean
hasElements
(){
return
(
pictoLinkedList
.
size
()
>
0
);
}
@Override
public
View
getView
(
int
position
,
View
convertView
,
ViewGroup
parent
){
return
PictoItemViewGenerator
.
getPictoView
(
this
.
pictoLinkedList
.
get
(
position
),
convertView
,
parent
);
}
@TargetApi
(
Build
.
VERSION_CODES
.
LOLLIPOP
)
public
void
ttsAllNew
(
TextToSpeech
tts
)
{
String
input
=
getAllAsString
();
Bundle
params
=
new
Bundle
();
params
.
putString
(
TextToSpeech
.
Engine
.
KEY_PARAM_VOLUME
,
"1"
);
params
.
putString
(
TextToSpeech
.
Engine
.
KEY_PARAM_UTTERANCE_ID
,
"TAPE_READ"
);
tts
.
speak
(
input
,
TextToSpeech
.
QUEUE_FLUSH
,
params
,
"TAPE_READ"
);
}
}
android/Pictogram/commonlibrary/src/main/java/com/yottacode/pictogram/action/UnsubscribeAction.java
0 → 100644
View file @
56f0de79
package
com
.
yottacode
.
pictogram
.
action
;
/**
* User actions regarding a pictogram that happens when the user is online --> they are sent to the server by websockets (Room class)
* It is required, inter alia, to support session state diagram such
* as is depicted at http://scm.ujaen.es/files/note/1042/Estados_y_acciones.pdf
* and http://scm.ujaen.es/softuno/pictogram/wikis/LUActions
* @author Fernando Martinez Santiago
* @version 1.0
* @see Room
*/
public
class
UnsubscribeAction
extends
Action
{
//Picto Action types
public
static
final
String
UNSUBSCRIBE
=
"unsubscribe"
;
public
static
final
String
ACTION
=
"/stu/unsubscribe"
;
public
UnsubscribeAction
(
){
super
(
UNSUBSCRIBE
);
}
public
String
get_action
()
{
return
ACTION
;}
}
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