Beispiel #1
0
class RecommendationsPanelCategory(RecommendationsPanel):
    """
    Panel for use in the category view that displays recommended apps for
    the given category
    """

    __gsignals__ = {"more-button-clicked": (GObject.SignalFlags.RUN_LAST, None, (GObject.TYPE_PYOBJECT,))}

    def __init__(self, db, properties_helper, subcategory):
        RecommendationsPanel.__init__(self)
        self.db = db
        self.properties_helper = properties_helper
        self.subcategory = subcategory
        if self.subcategory:
            self.set_header_label(
                GLib.markup_escape_text(utf8(_("Recommended For You in %s")) % utf8(self.subcategory.name))
            )
        self.recommended_for_you_content = None
        if self.recommender_agent.is_opted_in():
            self._update_recommended_for_you_content()
        else:
            self.hide()

    def _update_recommended_for_you_content(self):
        # destroy the old content to ensure we don't see it twice
        if self.recommended_for_you_content:
            self.recommended_for_you_content.destroy()
        # add the new stuff
        self.recommended_for_you_content = TileGrid()
        self.recommended_for_you_content.connect("application-activated", self._on_application_activated)
        self.add(self.recommended_for_you_content)
        self.spinner_notebook.show_spinner(_(u"Receiving recommendations…"))
        # get the recommendations from the recommender agent
        self.recommended_for_you_cat = RecommendedForYouCategory(self.db, subcategory=self.subcategory)
        self.recommended_for_you_cat.connect("needs-refresh", self._on_recommended_for_you_agent_refresh)
        self.recommended_for_you_cat.connect("recommender-agent-error", self._on_recommender_agent_error)

    def _on_recommended_for_you_agent_refresh(self, cat):
        self.header_implements_more_button()
        self.more.connect("clicked", self._on_more_button_clicked, self.recommended_for_you_cat)
        docs = cat.get_documents(self.db)
        # display the recommendations
        if len(docs) > 0:
            self.recommended_for_you_content.add_tiles(
                self.properties_helper, docs, LOBBY_RECOMMENDATIONS_CAROUSEL_LIMIT
            )
            self.recommended_for_you_content.show_all()
            self.spinner_notebook.hide_spinner()
            self.header.queue_draw()
            self.show_all()
        else:
            # hide the panel if we have no recommendations to show
            self.hide()

    def _on_more_button_clicked(self, btn, category):
        self.emit("more-button-clicked", category)
Beispiel #2
0
class RecommendationsPanelDetails(RecommendationsPanel):
    """
    Panel for use in the details view to display recommendations for a given
    application
    """
    def __init__(self, db, properties_helper):
        RecommendationsPanel.__init__(self)
        self.db = db
        self.properties_helper = properties_helper
        self.set_header_label(_(u"People Also Installed"))
        self.app_recommendations_content = TileGrid()
        self.app_recommendations_content.connect(
                    "application-activated", self._on_application_activated)
        self.add(self.app_recommendations_content)

    def set_pkgname(self, pkgname):
        self.pkgname = pkgname
        self._update_app_recommendations_content()

    def _update_app_recommendations_content(self):
        if self.app_recommendations_content:
            self.app_recommendations_content.remove_all()
        self.spinner_notebook.show_spinner(_(u"Receiving recommendations…"))
        # get the recommendations from the recommender agent
        self.app_recommendations_cat = AppRecommendationsCategory(
                self.db,
                self.pkgname)
        self.app_recommendations_cat.connect(
                                    'needs-refresh',
                                    self._on_app_recommendations_agent_refresh)
        self.app_recommendations_cat.connect('recommender-agent-error',
                                             self._on_recommender_agent_error)

    def _on_app_recommendations_agent_refresh(self, cat):
        docs = cat.get_documents(self.db)
        # display the recommendations
        if len(docs) > 0:
            self.app_recommendations_content.add_tiles(
                    self.properties_helper,
                    docs,
                    DETAILS_RECOMMENDATIONS_CAROUSEL_LIMIT)
            self.show_all()
            self.spinner_notebook.hide_spinner()
        else:
            self.hide()
class RecommendationsPanelDetails(RecommendationsPanel):
    """
    Panel for use in the details view to display recommendations for a given
    application
    """
    def __init__(self, db, properties_helper):
        RecommendationsPanel.__init__(self)
        self.db = db
        self.properties_helper = properties_helper
        self.set_header_label(_(u"People Also Installed"))
        self.app_recommendations_content = TileGrid()
        self.app_recommendations_content.connect(
                    "application-activated", self._on_application_activated)
        self.add(self.app_recommendations_content)

    def set_pkgname(self, pkgname):
        self.pkgname = pkgname
        self._update_app_recommendations_content()

    def _update_app_recommendations_content(self):
        if self.app_recommendations_content:
            self.app_recommendations_content.remove_all()
        self.spinner_notebook.show_spinner(_(u"Receiving recommendations…"))
        # get the recommendations from the recommender agent
        self.app_recommendations_cat = AppRecommendationsCategory(
                self.db,
                self.pkgname)
        self.app_recommendations_cat.connect(
                                    'needs-refresh',
                                    self._on_app_recommendations_agent_refresh)
        self.app_recommendations_cat.connect('recommender-agent-error',
                                             self._on_recommender_agent_error)

    def _on_app_recommendations_agent_refresh(self, cat):
        docs = cat.get_documents(self.db)
        # display the recommendations
        if len(docs) > 0:
            self.app_recommendations_content.add_tiles(
                    self.properties_helper,
                    docs,
                    DETAILS_RECOMMENDATIONS_CAROUSEL_LIMIT)
            self.show_all()
            self.spinner_notebook.hide_spinner()
        else:
            self.hide()
Beispiel #4
0
class RecommendationsPanelCategory(RecommendationsPanel):
    """
    Panel for use in the category view that displays recommended apps for
    the given category
    """

    __gsignals__ = {
        "more-button-clicked": (GObject.SignalFlags.RUN_LAST,
                                None,
                                (GObject.TYPE_PYOBJECT, ),
                                ),
    }

    def __init__(self, db, properties_helper, subcategory):
        RecommendationsPanel.__init__(self)
        self.db = db
        self.properties_helper = properties_helper
        self.subcategory = subcategory
        if self.subcategory:
            self.set_header_label(GLib.markup_escape_text(utf8(
                _("Recommended For You in %s")) % utf8(self.subcategory.name)))
        self.recommended_for_you_content = None
        if self.recommender_agent.is_opted_in():
            self._update_recommended_for_you_content()
        else:
            self.hide()

    def _update_recommended_for_you_content(self):
        # destroy the old content to ensure we don't see it twice
        if self.recommended_for_you_content:
            self.recommended_for_you_content.destroy()
        # add the new stuff
        self.recommended_for_you_content = TileGrid()
        self.recommended_for_you_content.connect(
                    "application-activated", self._on_application_activated)
        self.add(self.recommended_for_you_content)
        self.spinner_notebook.show_spinner(_(u"Receiving recommendations…"))
        # get the recommendations from the recommender agent
        self.recommended_for_you_cat = RecommendedForYouCategory(
                                            self.db,
                                            subcategory=self.subcategory)
        self.recommended_for_you_cat.connect(
                                    'needs-refresh',
                                    self._on_recommended_for_you_agent_refresh)
        self.recommended_for_you_cat.connect('recommender-agent-error',
                                             self._on_recommender_agent_error)

    def _on_recommended_for_you_agent_refresh(self, cat):
        self.header_implements_more_button()
        self.more.connect("clicked",
                          self._on_more_button_clicked,
                          self.recommended_for_you_cat)
        docs = cat.get_documents(self.db)
        # display the recommendations
        if len(docs) > 0:
            self.recommended_for_you_content.add_tiles(
                    self.properties_helper,
                    docs,
                    LOBBY_RECOMMENDATIONS_CAROUSEL_LIMIT)
            self.recommended_for_you_content.show_all()
            self.spinner_notebook.hide_spinner()
            self.header.queue_draw()
            self.show_all()
        else:
            # hide the panel if we have no recommendations to show
            self.hide()

    def _on_more_button_clicked(self, btn, category):
        self.emit("more-button-clicked", category)