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