~indicator-applet-developers/qmenumodel/trunk

« back to all changes in this revision

Viewing changes to libqmenumodel/src/unitymenumodel.cpp

  • Committer: Bileto Bot
  • Date: 2017-03-16 16:55:30 UTC
  • mfrom: (128.2.4 aboutToShow)
  • Revision ID: ci-train-bot@canonical.com-20170316165530-v1qqgwsib0t383qm
Add UnityMenuModel::aboutToShow ((LP: 1664578)

Show diffs side-by-side

added added

removed removed

Lines of Context:
289
289
    priv = new UnityMenuModelPrivate(this);
290
290
}
291
291
 
292
 
UnityMenuModel::UnityMenuModel(const UnityMenuModelPrivate& other, QObject *parent):
 
292
UnityMenuModel::UnityMenuModel(const UnityMenuModelPrivate& other, UnityMenuModel *parent):
293
293
    QAbstractListModel(parent)
294
294
{
295
295
    priv = new UnityMenuModelPrivate(other, this);
729
729
    }
730
730
}
731
731
 
 
732
void UnityMenuModel::aboutToShow(int index)
 
733
{
 
734
    GSequenceIter *it = g_sequence_get_iter_at_pos (priv->items, index);
 
735
    if (g_sequence_iter_is_end (it)) {
 
736
        return;
 
737
    }
 
738
 
 
739
    auto item = static_cast<GtkMenuTrackerItem*>(g_sequence_get(it));
 
740
    if (!item) {
 
741
        return;
 
742
    }
 
743
 
 
744
    quint64 actionTag;
 
745
    if (gtk_menu_tracker_item_get_attribute (item, "qtubuntu-tag", "t", &actionTag)) {
 
746
        // Child UnityMenuModel have priv->connection null, so climb to the parent until we find a non null one
 
747
        UnityMenuModelPrivate *privToUse = priv;
 
748
        while (privToUse && !privToUse->connection) {
 
749
            auto pModel = dynamic_cast<UnityMenuModel*>(privToUse->model->QObject::parent());
 
750
            if (pModel) {
 
751
                privToUse = pModel->priv;
 
752
            } else {
 
753
                privToUse = nullptr;
 
754
            }
 
755
        }
 
756
        if (privToUse) {
 
757
            g_dbus_connection_call (privToUse->connection,
 
758
                                    privToUse->busName,
 
759
                                    privToUse->menuObjectPath,
 
760
                                    "qtubuntu.actions.extra",
 
761
                                    "aboutToShow",
 
762
                                    g_variant_new("(t)", actionTag),
 
763
                                    nullptr,
 
764
                                    G_DBUS_CALL_FLAGS_NO_AUTO_START,
 
765
                                    G_MAXINT,
 
766
                                    nullptr,
 
767
                                    nullptr,
 
768
                                    nullptr);
 
769
        }
 
770
    }
 
771
}
 
772
 
732
773
void UnityMenuModel::activateByVariantString(int index, const QString& parameter)
733
774
{
734
775
    activate(index, Converter::toQVariantFromVariantString(parameter));