ginebra2/CopyCutPasteSnippet.h
author hgs
Fri, 15 Oct 2010 17:30:59 -0400
changeset 16 3c88a81ff781
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
16
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
*
hgs
parents:
diff changeset
     5
* This program is free software: you can redistribute it and/or modify
hgs
parents:
diff changeset
     6
* it under the terms of the GNU Lesser General Public License as published by
hgs
parents:
diff changeset
     7
* the Free Software Foundation, version 2.1 of the License.
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* This program is distributed in the hope that it will be useful,
hgs
parents:
diff changeset
    10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
hgs
parents:
diff changeset
    11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
hgs
parents:
diff changeset
    12
* GNU Lesser General Public License for more details.
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* You should have received a copy of the GNU Lesser General Public License
hgs
parents:
diff changeset
    15
* along with this program.  If not,
hgs
parents:
diff changeset
    16
* see "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html/".
hgs
parents:
diff changeset
    17
*
hgs
parents:
diff changeset
    18
* Description:
hgs
parents:
diff changeset
    19
*
hgs
parents:
diff changeset
    20
*/
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
#ifndef __COPY_CUT_PASTE_SNIPPET_H__
hgs
parents:
diff changeset
    23
#define __COPY_CUT_PASTE_SNIPPET_H__
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
#include "ChromeSnippet.h"
hgs
parents:
diff changeset
    26
#include "ChromeWidget.h"
hgs
parents:
diff changeset
    27
#include "NativeChromeItem.h"
hgs
parents:
diff changeset
    28
#include "ExternalEventCharm.h"
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
#include <QPushButton>
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
namespace GVA {
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
    class CopyCutPasteButton :  public QObject
hgs
parents:
diff changeset
    35
    {
hgs
parents:
diff changeset
    36
        Q_OBJECT
hgs
parents:
diff changeset
    37
hgs
parents:
diff changeset
    38
    public:
hgs
parents:
diff changeset
    39
        CopyCutPasteButton(const QString & text, QWidget * parent = 0);
hgs
parents:
diff changeset
    40
        virtual ~CopyCutPasteButton() {}
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
        void render(QPainter * painter, const QPoint & targetOffset = QPoint());
hgs
parents:
diff changeset
    43
        void setMousePressed(bool pressed) { m_mousePressed = pressed; }
hgs
parents:
diff changeset
    44
        QString text() const { return m_text; }
hgs
parents:
diff changeset
    45
        void setText(QString & text) { m_text = text; }
hgs
parents:
diff changeset
    46
        QSize size() const { return m_size; }
hgs
parents:
diff changeset
    47
        void setFixedSize(int w, int h) { m_size = QSize(w, h); }
hgs
parents:
diff changeset
    48
        void setDisabled(bool disabled) { m_disabled = disabled; }
hgs
parents:
diff changeset
    49
        bool isEnabled() const { return !m_disabled; }
hgs
parents:
diff changeset
    50
        
hgs
parents:
diff changeset
    51
        void mousePressEvent(QGraphicsSceneMouseEvent * event);
hgs
parents:
diff changeset
    52
        void mouseReleaseEvent(QGraphicsSceneMouseEvent * event);
hgs
parents:
diff changeset
    53
hgs
parents:
diff changeset
    54
    signals:
hgs
parents:
diff changeset
    55
        void clicked();
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
    private:
hgs
parents:
diff changeset
    58
        QString m_text;
hgs
parents:
diff changeset
    59
        bool m_mousePressed;
hgs
parents:
diff changeset
    60
        QSize m_size;
hgs
parents:
diff changeset
    61
        bool m_disabled;
hgs
parents:
diff changeset
    62
    };
hgs
parents:
diff changeset
    63
hgs
parents:
diff changeset
    64
    class CopyCutPasteItem : public NativeChromeItem
hgs
parents:
diff changeset
    65
    {
hgs
parents:
diff changeset
    66
        Q_OBJECT
hgs
parents:
diff changeset
    67
hgs
parents:
diff changeset
    68
    public:
hgs
parents:
diff changeset
    69
        CopyCutPasteItem(ChromeSnippet * snippet, ChromeWidget * chrome, QGraphicsItem * parent = 0);
hgs
parents:
diff changeset
    70
        virtual ~CopyCutPasteItem();
hgs
parents:
diff changeset
    71
        void buildMenu(bool isContentSelected);
hgs
parents:
diff changeset
    72
        void setEditorSnippet(ChromeSnippet * snippet) { m_editorSnippet = snippet; }
hgs
parents:
diff changeset
    73
        ChromeSnippet * editorSnippet() { return m_editorSnippet; }
hgs
parents:
diff changeset
    74
hgs
parents:
diff changeset
    75
    private slots:
hgs
parents:
diff changeset
    76
        void cut();
hgs
parents:
diff changeset
    77
        void copy();
hgs
parents:
diff changeset
    78
        void paste();
hgs
parents:
diff changeset
    79
hgs
parents:
diff changeset
    80
    protected:
hgs
parents:
diff changeset
    81
        virtual void paint(QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget);
hgs
parents:
diff changeset
    82
        virtual void mousePressEvent(QGraphicsSceneMouseEvent * event);
hgs
parents:
diff changeset
    83
        virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent * event);
hgs
parents:
diff changeset
    84
hgs
parents:
diff changeset
    85
    private:
hgs
parents:
diff changeset
    86
        void reset();
hgs
parents:
diff changeset
    87
hgs
parents:
diff changeset
    88
    private:
hgs
parents:
diff changeset
    89
        CopyCutPasteButton * m_cutButton;
hgs
parents:
diff changeset
    90
        CopyCutPasteButton * m_copyButton;
hgs
parents:
diff changeset
    91
        CopyCutPasteButton * m_pasteButton;
hgs
parents:
diff changeset
    92
        ChromeSnippet * m_editorSnippet;
hgs
parents:
diff changeset
    93
    };
hgs
parents:
diff changeset
    94
hgs
parents:
diff changeset
    95
  class CopyCutPasteSnippet : public ChromeSnippet
hgs
parents:
diff changeset
    96
  {
hgs
parents:
diff changeset
    97
    Q_OBJECT
hgs
parents:
diff changeset
    98
    public:
hgs
parents:
diff changeset
    99
       CopyCutPasteSnippet(const QString & elementId, ChromeWidget * chrome, QGraphicsWidget * widget, const QWebElement & element);
hgs
parents:
diff changeset
   100
       virtual ~CopyCutPasteSnippet() { if (m_externalEventCharm) delete m_externalEventCharm ;}
hgs
parents:
diff changeset
   101
       static CopyCutPasteSnippet * instance(const QString& elementId, ChromeWidget * chrome, const QWebElement & element);
hgs
parents:
diff changeset
   102
       virtual void setChromeWidget(QGraphicsWidget * widget);
hgs
parents:
diff changeset
   103
hgs
parents:
diff changeset
   104
    public slots:
hgs
parents:
diff changeset
   105
        virtual void setVisible(bool visiblity, bool animate = true);
hgs
parents:
diff changeset
   106
hgs
parents:
diff changeset
   107
    private:
hgs
parents:
diff changeset
   108
       void connectAll();
hgs
parents:
diff changeset
   109
       CopyCutPasteItem *copyCutPasteItem();
hgs
parents:
diff changeset
   110
       
hgs
parents:
diff changeset
   111
    private slots:
hgs
parents:
diff changeset
   112
       void onTimeout();
hgs
parents:
diff changeset
   113
       void onChromeComplete();
hgs
parents:
diff changeset
   114
       void onContextEvent(bool isContentSelected, QString snippetId);
hgs
parents:
diff changeset
   115
       void onExternalMouseEvent(QEvent *, const QString &, const QString &);
hgs
parents:
diff changeset
   116
       void onAspectChanged(int aspect);
hgs
parents:
diff changeset
   117
hgs
parents:
diff changeset
   118
    private:
hgs
parents:
diff changeset
   119
       QTimer * m_timer;
hgs
parents:
diff changeset
   120
       ExternalEventCharm * m_externalEventCharm;
hgs
parents:
diff changeset
   121
  };
hgs
parents:
diff changeset
   122
}
hgs
parents:
diff changeset
   123
hgs
parents:
diff changeset
   124
#endif