<div dir="ltr">Hi,<br><div class="gmail_extra"><br><div class="gmail_quote">2016-03-22 13:10 GMT+01:00 Devendra Vyas <span dir="ltr"><<a href="mailto:devendra.y12@lnmiit.ac.in" target="_blank">devendra.y12@lnmiit.ac.in</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div style="font-family:trebuchet ms,sans-serif">Hi<br><br></div><div style="font-family:trebuchet ms,sans-serif">This mail comprises of what I've understood after the discussions on mailing lists and IRC regarding modifying the core of Gcompris.<br><br></div><div style="font-family:trebuchet ms,sans-serif">Purpose: To provide users an option to download activities as per their wish/need. Keeping the full download option intact.<br><br></div><div style="font-family:trebuchet ms,sans-serif">Phases of development:<br></div><div style="font-family:trebuchet ms,sans-serif">P-1 -> Separate ActivityInfo.qml and icons from some activities and make new ActivityInfo.rcc. See whether we are successfully able to load them. The activities selected here will not have have any inter-dependencies on some other activity.<br><br></div><div style="font-family:trebuchet ms,sans-serif">P-2 -> Now for the activities that are inter-dependent, I think we'll have to code a new download manger in a way that it downloads all dependencies required for running that activity and nothing extra. As mentioned earlier by Johnny, erase_2clic needs erase. So download manager's code will manage accordingly.<br><br></div></div></blockquote><div><br></div><div>I'm not sure we need to update the DownloadManager in this case, we can just first download the dependencies and then the wanted package. I think there is a system with a job list that should work here?<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div style="font-family:trebuchet ms,sans-serif"></div><div style="font-family:trebuchet ms,sans-serif">P-3 -> Now providing option of selective activity download to end-user in a way that it is easy to understand. I suggest that we have two buttons at the very beginning of the app, that prompts user with two options/buttons: a) Full Download b) Selective download<br><br></div></div></blockquote><div><br></div><div>There are two things to consider: the first run where your solution works (should it depend on the platform? I mean for Desktop packages, do we propose all the activities directly? We also need to take care of not propose it if the user is not connected to internet, it should work offline).<br></div><div>Then, there should be the possibility to install/update/uninstall any activity when you want using the configuration panel.<br><br></div><div>For the selective download, do you have an idea of what it should look like, which information should be displayed? The icon, name, difficulty, tags, version? Can we reuse the existing menu to display these activities (and instead of flagging favorite, we can flag "already downloaded/can be upgraded") or maybe use a list?<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div style="font-family:trebuchet ms,sans-serif"></div><div style="font-family:trebuchet ms,sans-serif">P-4 -> Versioning of APIs. I'm a little unsure here. We have two issues to handle here: a) Avoid download of duplicate activity on the user end b) check and update correct version of activity to core. I think one of the ways could be, while we are creating a separate activityInfo.rcc for every activity, the download manger could check the corresponding ActivityInfo.qml file in activityInfo.rcc for version and then perform the necessary action.<br></div></div></blockquote><div><br></div><div>To avoid duplicate, you should already know if you have the activity or not, and its version. I think we can only have one downloadable_activities.rcc on server containing:<br></div><div>|- activity1/{icon/ActivityInfo.qml}<br>|- activity2/{icon/ActivityInfo.qml}<br></div><div>|- activity3/{icon/ActivityInfo.qml} ...<br><br></div><div>This file would be downloaded, if automatic download is activated, when the user starts the application if the version is more recent else with a button in the config, like for the voices. Then, we can see for each activity if we have a more recent one or not.<br><br></div><div>For knowing the minimum/maximum core version, we can probably add it in the ActivityInfo.qml. We have a createdInVersion field, maybe we can improve it.<br><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div style="font-family:trebuchet ms,sans-serif"></div><div style="font-family:trebuchet ms,sans-serif">P-5 -> If all of the above is done, I think we could also think of implementing an option that allows user to delete a particular activity. Suppose someone has completed all the levels of the activity and doesn't use the activity anymore then this option would help there. <br></div><div style="font-family:trebuchet ms,sans-serif">Implementation of P-5 -> We can add a ActivityHandler.cpp in the core that will keep track of this.<br></div><div style="font-family:trebuchet ms,sans-serif">In my humble opinion, this would take around 12 weeks including the testing.<br><br></div><div style="font-family:trebuchet ms,sans-serif">If mentors think this is small enough for GSoC, I'm ready to discuss and implement an additional option suggested by Emmanuel for allowing the user to download part of activity as per the age of the kid (If not for all then for some of the activities).<br><br></div></div></blockquote><div><br></div><div>Time wise, I think it should fit in a gsoc. The idea is almost clear, there will still be time when we'll need to discuss so it's 12 weeks less the discussions ;).<br><br></div><div>Johnny<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div style="font-family:trebuchet ms,sans-serif"></div><div style="font-family:trebuchet ms,sans-serif">I would request the review of the mentors on this that whether this could be a probable proposal for GSoC'16.<br><br></div><div style="font-family:trebuchet ms,sans-serif">Thanks<br clear="all"></div><div style="font-family:trebuchet ms,sans-serif">Devendra<br><span style="color:rgb(70,72,58);font-family:Georgia,Arial,Helvetica;font-size:small;line-height:35px">It is not your qualifications but your exposure in life that makes you who you are.<br><br></span></div><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><span style="color:rgb(136,136,136)"><br></span></div></div></div></div></div></div>
</div>
<br>_______________________________________________<br>
GCompris-devel mailing list<br>
<a href="mailto:GCompris-devel@kde.org">GCompris-devel@kde.org</a><br>
<a href="https://mail.kde.org/mailman/listinfo/gcompris-devel" rel="noreferrer" target="_blank">https://mail.kde.org/mailman/listinfo/gcompris-devel</a><br>
<br></blockquote></div><br></div></div>