ginebra2/ContentViews/ContentViewContextMenu.h
author hgs
Fri, 15 Oct 2010 17:30:59 -0400
changeset 16 3c88a81ff781
permissions -rw-r--r--
201041

#ifndef CONTENTVIEWCONTEXTMENU_H
#define CONTENTVIEWCONTEXTMENU_H

#include <QMenu>
#include <QTimer>

#include "ContextMenu.h"

namespace GVA {

/*!
 * Context menu implementation for web content views.
 */
class ContentViewContextMenu : public ContextMenu {
    Q_OBJECT
public:
    ContentViewContextMenu(QWebHitTestResult *hitTest, QWidget *parent = 0);

    virtual void addAction(QAction *action) {
        m_menu.addAction(action);
    }

    virtual void addAction(const QString text, const QObject * receiver, const char * member, const QKeySequence & shortcut = 0) {
        m_menu.addAction(text, receiver, member, shortcut);
    }

    virtual void exec(const QPoint & p) {
        if(!m_menu.isEmpty()){
            QPoint newp(p);

            if(p.x() < 570)  // left part of the screen; depends on screen size. should be replaced by something more reliable
                newp.rx()+=20; // start menu 20 px right of point p
            else  // right part of the screen
                newp.rx()-=(20 +  m_menu.sizeHint().width()); //start menu left of point p
            m_menu.exec(newp);
        }
    }

private slots:
    void onOpenLink();
    void onShareLink();
    void onShareImage();
    void onSaveImage();
    void onViewImage();

protected:
    QMenu m_menu;
    QWebHitTestResult *m_hitTest;
};

}  // GVA namespace

#endif // CONTENTVIEWCONTEXTMENU_H