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) { ""; player.loadData(playVideo, "text/html", "utf-8"); + } else if(link.contains("metacafe.com")) { + + String embedlink = link.replaceFirst("metacafe.com/watch","metacafe.com/embed"); + String playVideo = "" + + "