diff --git a/source-code/app/src/main/AndroidManifest.xml b/source-code/app/src/main/AndroidManifest.xml
index 11f893e5..518e1da0 100755
--- a/source-code/app/src/main/AndroidManifest.xml
+++ b/source-code/app/src/main/AndroidManifest.xml
@@ -23,7 +23,7 @@
android:name=".activity.HomeActivity"
android:configChanges="orientation|screenSize"
android:label="@string/app_name"
- android:theme="@style/NoActionBarThemeTransparentStatusBar">
+ android:theme="@style/NoActionBarThemeTransparentStatusBar" />
+ android:theme="@style/AppTheme.NoActionBar" />
+ android:theme="@style/Buildmlearn.FullScreen" />
= Build.VERSION_CODES.LOLLIPOP) {
+ getWindow().setStatusBarColor(primaryColorDark);
+ getWindow().setNavigationBarColor(primaryColor);
+ }
+ }
+
@Override
public void onBackPressed() {
FragmentManager fragmentManager = getFragmentManager();
diff --git a/source-code/app/src/main/java/org/buildmlearn/toolkit/activity/TemplateEditor.java b/source-code/app/src/main/java/org/buildmlearn/toolkit/activity/TemplateEditor.java
index 3b328167..e4b65413 100644
--- a/source-code/app/src/main/java/org/buildmlearn/toolkit/activity/TemplateEditor.java
+++ b/source-code/app/src/main/java/org/buildmlearn/toolkit/activity/TemplateEditor.java
@@ -3,6 +3,9 @@
import android.Manifest;
import android.app.Dialog;
import android.app.ProgressDialog;
+import android.content.DialogInterface;
+import android.support.design.widget.Snackbar;
+import android.support.v7.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
@@ -583,25 +586,19 @@ public boolean onOptionsItemSelected(MenuItem item) {
switch (id) {
case R.id.action_delete:
-
- final AlertDialog dialog = new AlertDialog.Builder(this)
- .setTitle(R.string.dialog_delete_title)
- .setMessage(R.string.dialog_delete_msg)
- .setPositiveButton(R.string.dialog_yes, null)
- .setNegativeButton(R.string.dialog_no, null)
- .create();
- dialog.show();
-
- dialog.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- dialog.dismiss();
- selectedTemplate.deleteItem(TemplateEditor.this, selectedPosition);
- selectedPosition = -1;
- restoreSelectedView();
- }
- });
-
+ final int restorePosition = selectedPosition;
+ final Object object = selectedTemplate.deleteItem(TemplateEditor.this,selectedPosition);
+ selectedPosition = -1;
+ restoreSelectedView();
+ Snackbar.make(findViewById(R.id.relative_layout),
+ R.string.snackbar_deleted_message,Snackbar.LENGTH_LONG)
+ .setAction(R.string.snackbar_undo, new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ selectedTemplate.restoreItem(TemplateEditor.this,restorePosition,object);
+ Snackbar.make(v,R.string.snackbar_restored_message,Snackbar.LENGTH_LONG).show();
+ }
+ }).show();
break;
case R.id.action_edit:
selectedTemplate.editItem(this, selectedPosition);
diff --git a/source-code/app/src/main/java/org/buildmlearn/toolkit/constant/Constants.java b/source-code/app/src/main/java/org/buildmlearn/toolkit/constant/Constants.java
index c82b039c..e50be6d8 100644
--- a/source-code/app/src/main/java/org/buildmlearn/toolkit/constant/Constants.java
+++ b/source-code/app/src/main/java/org/buildmlearn/toolkit/constant/Constants.java
@@ -19,6 +19,7 @@
public final static String PROJECT_FILE_PATH = "PROJECT_FILE_PATH";
public final static String START_ACTIVITY = "START_ACTIVITY";
public final static String START_FRAGMENT = "START_FRAGMENT";
+ public final static String BUILD_M_LEARN_PATH_123 = "/BuildmLearn123/";
}
diff --git a/source-code/app/src/main/java/org/buildmlearn/toolkit/fragment/SettingsFragment.java b/source-code/app/src/main/java/org/buildmlearn/toolkit/fragment/SettingsFragment.java
index 74a4f514..0834bfea 100644
--- a/source-code/app/src/main/java/org/buildmlearn/toolkit/fragment/SettingsFragment.java
+++ b/source-code/app/src/main/java/org/buildmlearn/toolkit/fragment/SettingsFragment.java
@@ -87,6 +87,19 @@ public boolean onPreferenceClick(Preference preference) {
}
});
+ Preference tell_friend=findPreference(getString(R.string.pref_tell_key));
+ tell_friend.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
+ @Override
+ public boolean onPreferenceClick(Preference preference) {
+ Intent shareIntent = new Intent();
+ shareIntent.setAction(Intent.ACTION_SEND);
+ shareIntent.putExtra(Intent.EXTRA_TEXT,getString(R.string.pref_tell_message)+" http://play.google.com/store/apps/details?id=" + getActivity().getPackageName());
+ shareIntent.setType("text/plain");
+ startActivity(shareIntent);
+ return true;
+ }
+ });
+
Preference restoreProject = findPreference(getString(R.string.key_restore_project));
restoreProject.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
diff --git a/source-code/app/src/main/java/org/buildmlearn/toolkit/matchtemplate/fragment/DetailFragment.java b/source-code/app/src/main/java/org/buildmlearn/toolkit/matchtemplate/fragment/DetailFragment.java
index 6b53c97d..80093ab9 100644
--- a/source-code/app/src/main/java/org/buildmlearn/toolkit/matchtemplate/fragment/DetailFragment.java
+++ b/source-code/app/src/main/java/org/buildmlearn/toolkit/matchtemplate/fragment/DetailFragment.java
@@ -154,18 +154,18 @@ public boolean onMenuItemClick(MenuItem menuItem) {
handleListViewListeners();
- listViewA.setAdapter(matchListAdapterA);
- listViewB.setAdapter(matchListAdapterB);
View header_A = getLayoutInflater(savedInstanceState).inflate(R.layout.match_template_detail_header_a, null);
View footer_A = getLayoutInflater(savedInstanceState).inflate(R.layout.match_template_detail_footer_a, null);
listViewA.addHeaderView(header_A);
listViewA.addFooterView(footer_A);
+ listViewA.setAdapter(matchListAdapterA);
View header_B = getLayoutInflater(savedInstanceState).inflate(R.layout.match_template_detail_header_b, null);
View footer_B = getLayoutInflater(savedInstanceState).inflate(R.layout.match_template_detail_footer_b, null);
listViewB.addHeaderView(header_B);
listViewB.addFooterView(footer_B);
+ listViewB.setAdapter(matchListAdapterB);
((TextView) rootView.findViewById(R.id.score)).setText(String.format(Locale.ENGLISH, "Score : %d of %d", countScore, matchListA.size()));
diff --git a/source-code/app/src/main/java/org/buildmlearn/toolkit/quiztemplate/fragment/LastFragment.java b/source-code/app/src/main/java/org/buildmlearn/toolkit/quiztemplate/fragment/LastFragment.java
index 680ae0f9..57038a23 100644
--- a/source-code/app/src/main/java/org/buildmlearn/toolkit/quiztemplate/fragment/LastFragment.java
+++ b/source-code/app/src/main/java/org/buildmlearn/toolkit/quiztemplate/fragment/LastFragment.java
@@ -56,7 +56,7 @@ public boolean onMenuItemClick(MenuItem menuItem) {
new AlertDialog.Builder(getActivity());
builder.setTitle(String.format("%1$s", getString(R.string.comprehension_about_us)));
builder.setMessage(getResources().getText(R.string.comprehension_about_text));
- builder.setPositiveButton("OK", null);
+ builder.setPositiveButton(getString(R.string.info_template_ok), null);
AlertDialog welcomeAlert = builder.create();
welcomeAlert.show();
assert welcomeAlert.findViewById(android.R.id.message) != null;
@@ -72,9 +72,9 @@ public boolean onMenuItemClick(MenuItem menuItem) {
});
((TextView) rootView.findViewById(R.id.text)).setText(getResources().getString(R.string.completed_message_quiz));
- ((TextView) rootView.findViewById(R.id.correct)).setText(String.format(Locale.getDefault(), "Total Correct : %1$d", stat[0]));
- ((TextView) rootView.findViewById(R.id.wrong)).setText(String.format(Locale.getDefault(), "Total Wrong : %1$d", stat[1]));
- ((TextView) rootView.findViewById(R.id.un_answered)).setText(String.format(Locale.getDefault(), "Total Unanswered : %1$d", stat[2]));
+ ((TextView) rootView.findViewById(R.id.correct)).setText(String.format(Locale.getDefault(), getString(R.string.total_correct),stat[0]));
+ ((TextView) rootView.findViewById(R.id.wrong)).setText(String.format(Locale.getDefault(), getString(R.string.total_wrong),stat[1]));
+ ((TextView) rootView.findViewById(R.id.un_answered)).setText(String.format(Locale.getDefault(), getString(R.string.total_unanswered), stat[2]));
rootView.findViewById(R.id.restart).setOnClickListener(new View.OnClickListener() {
@Override
diff --git a/source-code/app/src/main/java/org/buildmlearn/toolkit/quiztemplate/fragment/QuestionFragment.java b/source-code/app/src/main/java/org/buildmlearn/toolkit/quiztemplate/fragment/QuestionFragment.java
index a448c497..af7a3d6f 100644
--- a/source-code/app/src/main/java/org/buildmlearn/toolkit/quiztemplate/fragment/QuestionFragment.java
+++ b/source-code/app/src/main/java/org/buildmlearn/toolkit/quiztemplate/fragment/QuestionFragment.java
@@ -64,7 +64,7 @@ public boolean onMenuItemClick(MenuItem menuItem) {
new AlertDialog.Builder(getActivity());
builder.setTitle(String.format("%1$s", getString(R.string.comprehension_about_us)));
builder.setMessage(getResources().getText(R.string.comprehension_about_text));
- builder.setPositiveButton("OK", null);
+ builder.setPositiveButton(getString(R.string.info_template_ok), null);
AlertDialog welcomeAlert = builder.create();
welcomeAlert.show();
assert welcomeAlert.findViewById(android.R.id.message) != null;
@@ -110,7 +110,7 @@ public boolean onMenuItemClick(MenuItem menuItem) {
toolbar.setTitle(getResources().getString(R.string.app_name_quiz));
Menu m = navigationView.getMenu();
- SubMenu topChannelMenu = m.addSubMenu("Questions");
+ SubMenu topChannelMenu = m.addSubMenu(getString(R.string.quiz_new_question));
long numQues = db.getCountQuestions();
final String finalQuestionId = questionId;
@@ -122,7 +122,7 @@ public boolean onMenuItemClick(MenuItem menuItem) {
rg.check(rg.getChildAt(Integer.parseInt(answered)).getId());
}
for (int i = 1; i <= numQues; i++) {
- topChannelMenu.add(String.format(Locale.getDefault(), "Question %1$d", i));
+ topChannelMenu.add(String.format(Locale.getDefault(), getString(R.string.question), i));
topChannelMenu.getItem(i - 1).setIcon(R.drawable.ic_assignment_black_24dp);
final int finalI = i;
topChannelMenu.getItem(i - 1).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@@ -150,7 +150,7 @@ public boolean onMenuItemClick(MenuItem item) {
});
}
- ((TextView) rootView.findViewById(R.id.question_title)).setText(String.format(Locale.getDefault(), "Question No : %1$s", questionId));
+ ((TextView) rootView.findViewById(R.id.question_title)).setText(String.format(Locale.getDefault(), getString(R.string.quiz_question_no), questionId));
((TextView) rootView.findViewById(R.id.question)).setText(question);
if (option_1 != null) {
rootView.findViewById(R.id.radioButton1).setVisibility(View.VISIBLE);
diff --git a/source-code/app/src/main/java/org/buildmlearn/toolkit/simulator/Simulator.java b/source-code/app/src/main/java/org/buildmlearn/toolkit/simulator/Simulator.java
index 98d73820..83bfb6ac 100644
--- a/source-code/app/src/main/java/org/buildmlearn/toolkit/simulator/Simulator.java
+++ b/source-code/app/src/main/java/org/buildmlearn/toolkit/simulator/Simulator.java
@@ -39,7 +39,7 @@ protected void onCreate(Bundle savedInstanceState) {
actionBar.setDisplayHomeAsUpEnabled(true);
templateId = getIntent().getIntExtra(Constants.TEMPLATE_ID, -1);
if (templateId == -1) {
- Toast.makeText(this, "Invalid template ID, closing Template Editor activity", Toast.LENGTH_LONG).show();
+ Toast.makeText(this, getString(R.string.invalidTemplate), Toast.LENGTH_LONG).show();
finish();
return;
}
@@ -101,7 +101,7 @@ private void restoreTemplateEditor(Bundle savedInstanceState) {
Log.d(TAG, "Activity Restored");
selectedTemplate = (TemplateInterface) savedInstanceState.getSerializable(Constants.TEMPLATE_OBJECT);
if (selectedTemplate == null) {
- Toast.makeText(this, "Unable to restore Activity state, finsihing Template Editor activity", Toast.LENGTH_LONG).show();
+ Toast.makeText(this, getString(R.string.unableToRestore), Toast.LENGTH_LONG).show();
finish();
}
}
diff --git a/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/ComprehensionAdapter.java b/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/ComprehensionAdapter.java
index e17f5fec..96fce25f 100644
--- a/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/ComprehensionAdapter.java
+++ b/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/ComprehensionAdapter.java
@@ -204,12 +204,12 @@ public void onClick(View v) {
boolean isValidated = true;
int checkedAns = getCheckedAnswer(buttons);
if (checkedAns < 0) {
- Toast.makeText(context, "Choose a correct option", Toast.LENGTH_SHORT).show();
+ Toast.makeText(context, R.string.choose_correct_option, Toast.LENGTH_SHORT).show();
isValidated = false;
}
if (question.getText().toString().equals("")) {
- question.setError("Question is required");
+ question.setError(context.getString(R.string.ques_required));
isValidated = false;
}
@@ -220,7 +220,7 @@ public void onClick(View v) {
}
}
if (optionCount < 2) {
- Toast.makeText(context, "Minimum two multiple answers are required.", Toast.LENGTH_SHORT).show();
+ Toast.makeText(context, R.string.min_answers_required, Toast.LENGTH_SHORT).show();
isValidated = false;
}
@@ -258,7 +258,7 @@ private void checkButton(ArrayList buttons, ArrayList opt
if (button.getId() == id) {
int index = buttons.indexOf(button);
if (options.get(index).getText().toString().equals("")) {
- Toast.makeText(context, "Enter a valid option before marking it as answer", Toast.LENGTH_LONG).show();
+ Toast.makeText(context, R.string.enter_valid_option, Toast.LENGTH_LONG).show();
button.setChecked(false);
return;
} else {
diff --git a/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/ComprehensionTemplate.java b/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/ComprehensionTemplate.java
index 77d5f1f2..553fbc4f 100644
--- a/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/ComprehensionTemplate.java
+++ b/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/ComprehensionTemplate.java
@@ -525,6 +525,7 @@ public Object deleteItem(Activity activity, int position) {
setEmptyView(activity);
adapter.notifyDataSetChanged();
}
+ setEmptyView(activity);
if (comprehensionMetaModel==null)
{
return comprehensionModel;
@@ -559,7 +560,7 @@ public void restoreItem(Activity activity, int position, Object object) {
}
}
}
-
+ setEmptyView(activity);
}
@Override
diff --git a/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/DictationTemplate.java b/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/DictationTemplate.java
index 5a8b5826..0d9e45f8 100644
--- a/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/DictationTemplate.java
+++ b/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/DictationTemplate.java
@@ -230,6 +230,7 @@ public Object deleteItem(Activity activity, int position) {
dictData.remove(position);
setEmptyView(activity);
adapter.notifyDataSetChanged();
+ setEmptyView(activity);
return dictationModel;
}
@@ -242,6 +243,7 @@ public void restoreItem(Activity activity, int position, Object object) {
{
dictData.add(position,dictationModel);
adapter.notifyDataSetChanged();
+ setEmptyView(activity);
}
}
}
diff --git a/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/FlashCardAdapter.java b/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/FlashCardAdapter.java
index 7be6bf70..5e539e38 100644
--- a/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/FlashCardAdapter.java
+++ b/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/FlashCardAdapter.java
@@ -82,7 +82,7 @@ public View getView(final int position, View convertView, ViewGroup parent) {
holder.edit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- Toast.makeText(mContext, "Long press to edit this item", Toast.LENGTH_SHORT).show();
+ Toast.makeText(mContext, R.string.LongPress_toedit, Toast.LENGTH_SHORT).show();
}
});
diff --git a/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/FlashTemplate.java b/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/FlashTemplate.java
index f01379fb..582af4e0 100644
--- a/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/FlashTemplate.java
+++ b/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/FlashTemplate.java
@@ -265,7 +265,7 @@ public Object deleteItem(Activity activity, int position) {
mData.remove(position);
setEmptyView(activity);
mAdapter.notifyDataSetChanged();
-
+ setEmptyView(activity);
return flashCardModel;
}
@@ -278,6 +278,7 @@ public void restoreItem(Activity activity, int position, Object object) {
{
mData.add(position,flashCardModel);
mAdapter.notifyDataSetChanged();
+ setEmptyView(activity);
}
}
}
diff --git a/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/InfoTemplate.java b/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/InfoTemplate.java
index 7a20638f..c656d804 100644
--- a/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/InfoTemplate.java
+++ b/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/InfoTemplate.java
@@ -193,6 +193,7 @@ public Object deleteItem(Activity activity, int position) {
infoData.remove(position);
setEmptyView(activity);
adapter.notifyDataSetChanged();
+ setEmptyView(activity);
return infoModel;
}
@@ -205,6 +206,7 @@ public void restoreItem(Activity activity, int position, Object object) {
{
infoData.add(position,infoModel);
adapter.notifyDataSetChanged();
+ setEmptyView(activity);
}
}
}
diff --git a/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/LearnSpellingTemplate.java b/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/LearnSpellingTemplate.java
index 18be82c4..10e3f90c 100644
--- a/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/LearnSpellingTemplate.java
+++ b/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/LearnSpellingTemplate.java
@@ -195,6 +195,7 @@ public Object deleteItem(Activity activity, int position) {
mLearnSpellingData.remove(position);
setEmptyView(activity);
adapter.notifyDataSetChanged();
+ setEmptyView(activity);
return learnSpellingModel;
}
@@ -207,6 +208,7 @@ public void restoreItem(Activity activity, int position, Object object) {
{
mLearnSpellingData.add(position,learnSpellingModel);
adapter.notifyDataSetChanged();
+ setEmptyView(activity);
}
}
}
diff --git a/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/MatchTemplate.java b/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/MatchTemplate.java
index fcfe3fd4..105c2586 100644
--- a/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/MatchTemplate.java
+++ b/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/MatchTemplate.java
@@ -172,6 +172,21 @@ public void onClick(View v) {
String first_list_itemText = first_list_item.getText().toString().trim();
String second_list_itemText = second_list_item.getText().toString().trim();
+ if(matchData.size() > 0) {
+ for (int i = 0; i < matchData.size(); i++) {
+ if (first_list_itemText.equals(matchData.get(i).getMatchA()) || first_list_itemText.equals(matchData.get(i).getMatchB())) {
+ first_list_item.requestFocus();
+ first_list_item.setError("Option already inserted in list");
+ return;
+ }
+ if (second_list_itemText.equals(matchData.get(i).getMatchA()) || second_list_itemText.equals(matchData.get(i).getMatchB())) {
+ second_list_item.requestFocus();
+ second_list_item.setError("Option already inserted in list");
+ return;
+ }
+ }
+ }
+
MatchModel temp = new MatchModel(first_list_itemText, second_list_itemText);
matchData.add(temp);
adapter.notifyDataSetChanged();
@@ -298,6 +313,23 @@ public void onClick(View v) {
String first_list_itemText = first_list_item.getText().toString().trim();
String second_list_itemText = second_list_item.getText().toString().trim();
+ if (matchData.size() > 0){
+ for(int i=0;i buttons, ArrayList opt
if (button.getId() == id) {
int index = buttons.indexOf(button);
if (options.get(index).getText().toString().equals("")) {
- Toast.makeText(context, "Enter a valid option before marking it as answer", Toast.LENGTH_LONG).show();
+ Toast.makeText(context, R.string.enter_valid_option, Toast.LENGTH_LONG).show();
button.setChecked(false);
return;
} else {
diff --git a/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/QuizTemplate.java b/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/QuizTemplate.java
index 881c05d6..9e9e3809 100644
--- a/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/QuizTemplate.java
+++ b/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/QuizTemplate.java
@@ -341,6 +341,7 @@ public Object deleteItem(Activity activity, int position) {
quizData.remove(position);
setEmptyView(activity);
mAdapter.notifyDataSetChanged();
+ setEmptyView(activity);
return quizModel;
}
@@ -351,6 +352,7 @@ public void restoreItem(Activity activity, int position, Object object) {
if (quizModel != null) {
quizData.add(position, quizModel);
mAdapter.notifyDataSetChanged();
+ setEmptyView(activity);
}
}
}
@@ -402,7 +404,7 @@ private void checkButton(ArrayList buttons, ArrayList opt
if (button.getId() == id) {
int index = buttons.indexOf(button);
if ("".equals(options.get(index).getText().toString().trim())) {
- options.get(index).setError(context.getString(R.string.valid_before_answer));
+ options.get(index).setError(context.getString(R.string.enter_valid_option));
options.get(index).setText(null);
button.setChecked(false);
return;
diff --git a/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/VideoCollectionTemplate.java b/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/VideoCollectionTemplate.java
index 7c290c50..fea3b452 100644
--- a/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/VideoCollectionTemplate.java
+++ b/source-code/app/src/main/java/org/buildmlearn/toolkit/templates/VideoCollectionTemplate.java
@@ -49,6 +49,7 @@ public class VideoCollectionTemplate implements TemplateInterface {
private static final String YOUTUBE_SHORT = "youtu.be";
private static final String DAILYMOTION = "dailymotion";
private static final String VIMEO = "vimeo";
+ private static final String METACAFE = "metacafe";
transient private VideoCollectionAdapter adapter;
private ArrayList videoData;
transient private ProgressDialog progress;
@@ -70,7 +71,7 @@ private static boolean validated(Context context, EditText link) {
if ("".equals(linkText)) {
link.setError(context.getString(R.string.video_collection_template_link_hint));
return false;
- } else if (!(linkText.contains(YOUTUBE + ".com") || linkText.contains(YOUTUBE_SHORT) || linkText.contains(DAILYMOTION + ".com") || linkText.contains(VIMEO + ".com"))) {
+ } else if (!(linkText.contains(YOUTUBE + ".com") || linkText.contains(YOUTUBE_SHORT) || linkText.contains(DAILYMOTION + ".com") || linkText.contains(METACAFE + ".com") || linkText.contains(VIMEO + ".com"))) {
link.setError(context.getString(R.string.video_collection_template_linited_links));
return false;
}
@@ -98,7 +99,8 @@ private static boolean validated(Context context, EditText title, EditText descr
return false;
} else if(!Patterns.WEB_URL.matcher(linkText).matches()){
link.setError(context.getString(R.string.video_collection_template_link_valid_hint));
- } else if (!(linkText.contains(YOUTUBE + ".com") || linkText.contains(YOUTUBE_SHORT) || linkText.contains(DAILYMOTION + ".com") || linkText.contains(VIMEO + ".com"))) {
+ return false;
+ } else if (!(linkText.contains(YOUTUBE + ".com") || linkText.contains(YOUTUBE_SHORT) || linkText.contains(DAILYMOTION + ".com") || linkText.contains(METACAFE + ".com") || linkText.contains(VIMEO + ".com"))) {
link.setError(context.getString(R.string.video_collection_template_linited_links));
return false;
}
@@ -189,6 +191,18 @@ private String convertLink(String link) {
String VIMEO_OEMBED_LINK = "https://vimeo.com/api/oembed.json?url=";
return VIMEO_OEMBED_LINK + link;
+ } else if (link.contains(METACAFE)) {
+ if (!link.contains("www.")) {
+ link = "http://www." + link;
+ } else if (!(link.contains("http:") || link.contains("https:"))) {
+ link = "http://" + link;
+ }
+ if(!link.endsWith("/")) {
+ link = link+"/";
+ }
+ link.replaceFirst("https://","http://");
+
+ return link;
}
return null;
@@ -322,6 +336,7 @@ public Object deleteItem(Activity activity, int position) {
videoData.remove(position);
setEmptyView(activity);
adapter.notifyDataSetChanged();
+ setEmptyView(activity);
return videoModel;
}
@@ -332,6 +347,7 @@ public void restoreItem(Activity activity, int position, Object object) {
if (videoModel != null) {
videoData.add(position, videoModel);
adapter.notifyDataSetChanged();
+ setEmptyView(activity);
}
}
}
@@ -407,7 +423,7 @@ protected String doInBackground(String... params) {
success = true;
final String BASE_URL = params[0];
- if (BASE_URL.contains(YOUTUBE + ".com")) {
+ if (BASE_URL.contains(YOUTUBE + ".com") || BASE_URL.contains(METACAFE + ".com")) {
try {
int TIMEOUT_LIMIT = 60000;
String USER_AGENT = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36";
@@ -422,8 +438,15 @@ protected String doInBackground(String... params) {
String META_CONTENT = "content";
String title = titleElem.attr(META_CONTENT);
- org.jsoup.nodes.Element inputElements = document.getElementById("watch-description-text");
- String description = inputElements.html();
+ String description = "";
+ if(BASE_URL.contains(YOUTUBE + ".com")) {
+ org.jsoup.nodes.Element inputElements = document.getElementById("watch-description-text");
+ description = inputElements.html();
+ } else if(BASE_URL.contains(METACAFE + ".com")) {
+ String META_PROPERTY_DESCRIPTION = "meta[name=description]";
+ Elements descriptionElem = document.select(META_PROPERTY_DESCRIPTION);
+ description = descriptionElem.attr(META_CONTENT);
+ }
//String META_PROPERTY_DESCRIPTION = "meta[property=og:description]";
//Elements descriptionElem = document.select(META_PROPERTY_DESCRIPTION);
diff --git a/source-code/app/src/main/java/org/buildmlearn/toolkit/utilities/SignerThread.java b/source-code/app/src/main/java/org/buildmlearn/toolkit/utilities/SignerThread.java
index 152af36e..a1858d5d 100644
--- a/source-code/app/src/main/java/org/buildmlearn/toolkit/utilities/SignerThread.java
+++ b/source-code/app/src/main/java/org/buildmlearn/toolkit/utilities/SignerThread.java
@@ -240,15 +240,15 @@ public void run() {
if (zipSigner.isCanceled()) {
Log.d(TAG, "Signing cancelled");
- Toast.makeText(toolkit, "APK file not generated", Toast.LENGTH_SHORT).show();
+ Toast.makeText(toolkit, R.string.apk_not_generated, Toast.LENGTH_SHORT).show();
} else {
Log.d(TAG, "Signing Complete");
listener.onSuccess(finalApk);
if (toolkit.isExternalStorageAvailable()) {
- showNotification("APK file saved in Downloads folder");
+ showNotification(context.getString(R.string.apk_file_saved));
} else {
- showNotification("SD card not found. APK file saved in internal storage.");
+ showNotification(context.getString(R.string.sd_card_notfound));
}
}
@@ -280,7 +280,7 @@ private void showNotification(String description) {
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(toolkit)
.setSmallIcon(R.drawable.ic_stat_toggle_check_box)
- .setContentTitle("APK Generated")
+ .setContentTitle(context.getString(R.string.apk_generated))
.setContentText(description)
.setContentIntent(pendingIntent)
.setAutoCancel(true);
diff --git a/source-code/app/src/main/java/org/buildmlearn/toolkit/videocollectiontemplate/fragment/DetailActivityFragment.java b/source-code/app/src/main/java/org/buildmlearn/toolkit/videocollectiontemplate/fragment/DetailActivityFragment.java
index d98c5f94..1adf3992 100644
--- a/source-code/app/src/main/java/org/buildmlearn/toolkit/videocollectiontemplate/fragment/DetailActivityFragment.java
+++ b/source-code/app/src/main/java/org/buildmlearn/toolkit/videocollectiontemplate/fragment/DetailActivityFragment.java
@@ -79,7 +79,7 @@ public boolean onMenuItemClick(MenuItem menuItem) {
new AlertDialog.Builder(getActivity());
builder.setTitle(String.format("%1$s", getString(R.string.comprehension_about_us)));
builder.setMessage(getResources().getText(R.string.about_text_video));
- builder.setPositiveButton("OK", null);
+ builder.setPositiveButton(getString(R.string.info_template_ok), null);
AlertDialog welcomeAlert = builder.create();
welcomeAlert.show();
assert welcomeAlert.findViewById(android.R.id.message) != null;
@@ -150,7 +150,7 @@ public void onLoadFinished(Loader loader, Cursor data) {
player.getSettings().setTextZoom(140);
String link = data.getString(Constants.COL_LINK);
- if (link.contains("youtube.com")) {
+ if (link.contains(getString(R.string.video_collection_youtube))) {
int pos = link.indexOf("watch?v=");
String videoId = link.substring(pos + 8);
@@ -161,7 +161,7 @@ public void onLoadFinished(Loader loader, Cursor data) {
player.loadData(playVideo, "text/html", "utf-8");
- } else if (link.contains("vimeo.com")) {
+ } else if (link.contains(getString(R.string.video_collection_vimeo))) {
int pos;
if (link.contains("/")) {
@@ -173,7 +173,7 @@ public void onLoadFinished(Loader loader, Cursor data) {
player.loadUrl("http://player.vimeo.com/video/" + videoId + "?player_id=player&autoplay=1&title=0&byline=0&portrait=0&api=1&maxheight=480&maxwidth=800");
- } else if (link.contains("dailymotion.com")) {
+ } else if (link.contains(getString(R.string.video_collection_dailymotion))) {
int pos;
if (link.contains("/")) {
@@ -188,6 +188,15 @@ public void onLoadFinished(Loader loader, Cursor data) {
"