1 #include "buttonscell.h"
2 
3 const int ButtonsCell::ACTIONID_NONE   = 0;
4 const int ButtonsCell::ACTIONID_PLAY   = 1;
5 const int ButtonsCell::ACTIONID_SAVE   = 2;
6 const int ButtonsCell::ACTIONID_COPY   = 4;
7 const int ButtonsCell::ACTIONID_DELETE = 8;
8 
ButtonsCell(QWidget * parent,int hideBtn)9 ButtonsCell::ButtonsCell(QWidget* parent, int hideBtn) : QWidget(parent)
10 {
11     setAutoFillBackground(false);
12 
13     setMouseTracking(true);
14     setAttribute(Qt::WA_Hover, true);
15     setAttribute(Qt::WA_AlwaysShowToolTips, true);
16 
17     mActionId = ACTIONID_NONE;
18 
19     QHBoxLayout* lay = new QHBoxLayout;
20     lay->setSpacing(0);
21     lay->setContentsMargins(0, 0, 0, 0);
22     lay->setAlignment(Qt::AlignLeft);
23 
24     int hide_cnt = 0;
25 
26     if ((hideBtn & ACTIONID_PLAY) == 0)
27     {
28         mPlayBtn = new CellBtn(parent);
29         mPlayBtn->setIcon(QIcon(":/img/document-new.png"));
30         mPlayBtn->setToolTip(tr("Play this Game again"));
31         mPlayBtn->setFixedSize(QSize(18, 18));
32         mPlayBtn->setAutoRaise(true);
33         connect(mPlayBtn, SIGNAL(clicked()), this, SLOT(ButtonClickedSlot()));
34 
35         lay->addWidget(mPlayBtn);
36         lay->addSpacing(2);
37         mButtonsList.append(mPlayBtn);
38     }
39     else
40     {
41         ++hide_cnt;
42     }
43 
44     if ((hideBtn & ACTIONID_SAVE) == 0)
45     {
46         mSaveBtn = new CellBtn(parent);
47         mSaveBtn->setIcon(QIcon(":/img/bookmark_add.png"));
48         mSaveBtn->setToolTip(tr("Save this Game as Bookmark"));
49         mSaveBtn->setFixedSize(QSize(18, 18));
50         mSaveBtn->setAutoRaise(true);
51         connect(mSaveBtn, SIGNAL(clicked()), this, SLOT(ButtonClickedSlot()));
52 
53         lay->addWidget(mSaveBtn);
54         lay->addSpacing(2);
55         mButtonsList.append(mSaveBtn);
56     }
57     else
58     {
59         ++hide_cnt;
60     }
61 
62     if ((hideBtn & ACTIONID_COPY) == 0)
63     {
64         mCopyBtn = new CellBtn(parent);
65         mCopyBtn->setIcon(QIcon(":/img/edit-copy.png"));
66         mCopyBtn->setToolTip(tr("Copy Game Number to Clipboard"));
67         mCopyBtn->setFixedSize(QSize(18, 18));
68         mCopyBtn->setAutoRaise(true);
69         connect(mCopyBtn, SIGNAL(clicked()), this, SLOT(ButtonClickedSlot()));
70 
71         lay->addWidget(mCopyBtn);
72         lay->addSpacing(2);
73         mButtonsList.append(mCopyBtn);
74     }
75     else
76     {
77         ++hide_cnt;
78     }
79 
80     if ((hideBtn & ACTIONID_DELETE) == 0)
81     {
82         if (hide_cnt > 0)
83         {
84             lay->addSpacing(hide_cnt * 20);
85         }
86 
87         mDeleteBtn = new CellBtn(parent);
88         mDeleteBtn->setIcon(QIcon(":/img/edit-delete.png"));
89         mDeleteBtn->setToolTip(tr("Remove from List"));
90         mDeleteBtn->setFixedSize(QSize(18, 18));
91         mDeleteBtn->setAutoRaise(true);
92         connect(mDeleteBtn, SIGNAL(clicked()), this, SLOT(ButtonClickedSlot()));
93 
94         lay->addWidget(mDeleteBtn);
95         mButtonsList.append(mDeleteBtn);
96     }
97 
98     setLayout(lay);
99 }
100 
GetActionId()101 int ButtonsCell::GetActionId()
102 {
103     int aid = mActionId;
104     mActionId = ACTIONID_NONE;
105     return aid;
106 }
107 
ButtonClickedSlot()108 void ButtonsCell::ButtonClickedSlot()
109 {
110     if (sender() == 0)
111     {
112         return;
113     }
114 
115     CellBtn* btn = qobject_cast<CellBtn*>(sender());
116     if (btn == mDeleteBtn)
117     {
118             mActionId = ACTIONID_DELETE;
119     }
120     else if (btn == mPlayBtn)
121     {
122             mActionId = ACTIONID_PLAY;
123     }
124     else if (btn == mSaveBtn)
125     {
126             mActionId = ACTIONID_SAVE;
127     }
128     else if (btn == mCopyBtn)
129     {
130             mActionId = ACTIONID_COPY;
131     }
132     emit CellButtonClickedSignal();
133 }
134