[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdegames/ksudoku/src/gui/views
From: Andreas Pakulat <apaku () gmx ! de>
Date: 2007-11-01 0:53:24
Message-ID: 1193878404.102843.18047.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 731566 by apaku:
Add more vertical space to the buttons so markers and thick separation lines don't \
interfere with each other. BUG:151338
M +44 -42 qsudokubutton.cpp
--- trunk/KDE/kdegames/ksudoku/src/gui/views/qsudokubutton.cpp #731565:731566
@@ -66,17 +66,17 @@
HColorSCB = HColorCB,
HColorSRCB = HColorRCB,
- // Highlights for the helper
+ // Highlights for the helper
HColorGood = 0xffbfffbf,
HColorBad = 0xffffbfbf,
HColorSGood = HColorGood,
HColorSBad = HColorBad,
-
+
// Border colors
BColorDark = 0xff555753,
BColorLight = 0xffffffff, // 0xeeeeec
BColorSimple = 0xff888a85,
-
+
// Font Colors
FColorStd = 0xff646464,
FColorGiven = 0xff000064,
@@ -110,24 +110,24 @@
HColorSCB = 0xff00b377,
HColorSRCB = 0xff888a85,
- // Highlights for the helper
+ // Highlights for the helper
HColorGood = 0xffbfffbf,
HColorBad = 0xffffbfbf,
HColorSGood = 0xff80ff80,
HColorSBad = 0xffff8080,
-
+
// Border colors
BColorDark = 0xff555753,
BColorLight = 0xff555753,
BColorSimple = 0xff555753,
-
+
// Font Colors
FColorStd = 0xff646464,
FColorGiven = 0xff000064,
FColorWrong = 0xff800000,
FColorMarker = 0xff646464
};
-
+
// With 3D look
/* enum GameColors {
// Standard background
@@ -154,7 +154,7 @@
HColorSCB = HColorCB,
HColorSRCB = HColorRCB,
- // Highlights for the helper
+ // Highlights for the helper
HColorGood = 0xffbfffbf,
HColorBad = 0xffffbfbf,
HColorSGood = HColorGood,
@@ -164,7 +164,7 @@
BColorDark = 0xff888a85,
BColorLight = 0xffeeeeee, // 0xeeeeec
BColorSimple = 0xff888a85,
-
+
// Font Colors
FColorStd = 0xff646464,
FColorGiven = 0xff000064,
@@ -211,9 +211,9 @@
m_mousein = false;
m_state = WrongValue;
-
+
m_highlights = HighlightNone;
-
+
// make cells surrounded with big borders special
Graph2d* g = dynamic_cast<Graph2d*>(m_ksView.game().puzzle()->solver()->g);
if(g &&
@@ -229,7 +229,7 @@
setFocusPolicy(Qt::ClickFocus);
m_custom=false;
-
+
setAttribute(Qt::WA_OpaquePaintEvent, true);
}
@@ -242,11 +242,13 @@
{
int w = m_ksView.width () / m_ksView.game().puzzle()->solver()->g->sizeX();
int h = m_ksView.height() / m_ksView.game().puzzle()->solver()->g->sizeY();
- setGeometry( m_x*(w), m_y*(h), w, h);
+ //the additional space vertically is needed so the markers are also visible
+ //under the thicker separation lines
+ setGeometry( m_x*(w), m_y*(h+4), w, h+8);
//m_qpixmap = m_qpixmap.scaled(size()); //TODO destroy old one //TODO PORT
m_needRedraw = true;//draw();
-
+
updateData();
}
@@ -256,30 +258,30 @@
m_mousein = true;
}
-void QSudokuButton::focusOutEvent (QEvent *)
+void QSudokuButton::focusOutEvent (QEvent *)
{//TODO it does not work
emit finishHighlight();
}
-void QSudokuButton::leaveEvent (QEvent *)
+void QSudokuButton::leaveEvent (QEvent *)
{
emit leave(m_x,m_y);
m_mousein = false;
}
-void QSudokuButton::exitEvent (QEvent *)
+void QSudokuButton::exitEvent (QEvent *)
{
m_mousein = false;
emit enter(m_x,m_y);
}
-void QSudokuButton::keyPressEvent ( QKeyEvent * e )
+void QSudokuButton::keyPressEvent ( QKeyEvent * e )
{
if(e->modifiers() & Qt::ControlModifier)
emit beginHighlight();
e->ignore(); //pass on
}
-
+
void QSudokuButton::keyReleaseEvent ( QKeyEvent *e )
{
emit finishHighlight();
@@ -305,10 +307,10 @@
paintHighlight(qpainter);
-
+
Graph2d* g = dynamic_cast<Graph2d*>(m_ksView.game().puzzle()->solver()->g);
if(!g) return;
-
+
//draw border
bool left = g->hasLeftBorder(m_x, m_y);
bool top = g->hasTopBorder(m_x, m_y);
@@ -325,7 +327,7 @@
if(!bottom) { qpainter.drawLine(0,height()-1,width()-1,height()-1); }
if(!right) { qpainter.drawLine(width()-1,0,width()-1,height()-1); }
}
-
+
if(top || left) {
pen.setWidth( 5 );
pen.setColor(QColor(BColorDark));
@@ -352,7 +354,7 @@
bool top = g->hasTopBorder(m_x, m_y);
bool right = g->hasRightBorder(m_x, m_y);
bool bottom = g->hasBottomBorder(m_x, m_y);
-
+
QRect pos = rect();
QLinearGradient grad(0,-pos.height(),pos.width(),pos.height());
grad.setColorAt(0.0, 0xffffffff);
@@ -386,15 +388,15 @@
default:
KMessageBox::information(this, i18n("BUG: No default color defined, but it is \
apparently needed")); }
-
+
QTextOption textOption(Qt::AlignCenter);
-
- if(marker)
+
+ if(marker)
{
if(m_cols > 0) {
QFontMetrics fm(m_font);
uint cwidth = fm.width(QChar('0'));
-
+
QList<qreal> tabs;
for(int i = 0; i < m_cols; ++i) {
tabs.append((i+1)*rect().width()/(m_cols+1) -cwidth/2);
@@ -405,7 +407,7 @@
textOption.setAlignment(Qt::AlignRight);
}
}
-
+
qpainter.setFont(m_font);
qpainter.drawText( rect(), m_text, textOption);
}
@@ -415,7 +417,7 @@
{
if(mouseevent->button() == Qt::LeftButton)
emit clicked2 (m_x,m_y);
-
+
if(mouseevent->button() == Qt::RightButton)
emit rightclicked (m_x,m_y);
}
@@ -429,10 +431,10 @@
m_text = "?";
return;
}
-
+
int width = rect().width();
int height = rect().height();
-
+
m_state = info.state();
switch(info.state()) {
case GivenValue:
@@ -443,42 +445,42 @@
m_text = QString();
break;
}
-
+
if(!info.value()) {
m_text = QString();
} else {
m_text = m_ksView.symbol(info.value());
}
-
+
m_font.setPointSizeF(qMin(0.4 * height, 0.4*width));
break;
case Marker:
m_text = QString();
if(rect().height() <= 4) break;
-
+
// Returns the width
int order = m_ksView.game().order();
int entries = order;
if(order > 16) entries = info.markers().count(true);
m_cols = qMax(2, int(sqrt(entries-1))+1);
m_rows = qMax(2, (entries-1) / width +1);
-
+
if(entries == order) {
// Align markers in a grid. Each value has its own cell
// not depending on whether it has a marker
-
+
for(int i = 0; i < order; ++i) {
m_text += '\t';
if(info.marker(i+1))
m_text += m_ksView.symbol(i+1);
else
m_text += ' ';
-
+
if(!((i+1) % m_cols) && (i+1 != order)) {
m_text += '\n';
}
}
-
+
m_font.setPointSizeF(qMin(0.35 * height/m_rows, 0.6 * width/m_cols));
} else if (m_cols <= 4) {
// Align markers in a grid. Only markers get a cell
@@ -492,17 +494,17 @@
}
}
}
-
+
m_font.setPointSizeF(qMin(0.35 * height/m_rows, 0.6 * width/m_cols));
} else {
// Try to show markers as free text
-
+
m_cols = -1;
// TODO implement this
}
break;
}
-
+
m_needRedraw = true;
update();
}
@@ -514,7 +516,7 @@
void QSudokuButton::setHighlight(int value) {
int oldValue = m_highlights;
m_highlights |= value;
-
+
if(highlightColors[m_highlights & HighlightMask] != highlightColors[oldValue & \
HighlightMask]) update();
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic