summaryrefslogtreecommitdiff
path: root/library/qpedecoration_qws.cpp
Side-by-side diff
Diffstat (limited to 'library/qpedecoration_qws.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--library/qpedecoration_qws.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/library/qpedecoration_qws.cpp b/library/qpedecoration_qws.cpp
index b6085ef..e041945 100644
--- a/library/qpedecoration_qws.cpp
+++ b/library/qpedecoration_qws.cpp
@@ -1,83 +1,84 @@
/**********************************************************************
** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
** This file is part of Qtopia Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
+#define QTOPIA_INTERNAL_LANGLIST
#include <qapplication.h>
#include <qstyle.h>
#include <qwidget.h>
#include <qpainter.h>
#include <qtimer.h>
#include <qwhatsthis.h>
#include "qcopenvelope_qws.h"
#include "qpedecoration_qws.h"
#include <qdialog.h>
#include <qdrawutil.h>
#include <qgfx_qws.h>
#include "qpeapplication.h"
#include "resource.h"
#include "global.h"
#include <qfile.h>
#include <qsignal.h>
#include <stdlib.h>
extern QRect qt_maxWindowRect;
//#define MINIMIZE_HELP_HACK // use minimize button when not a dialog
//#define WHATSTHIS_MODE
#ifndef QT_NO_QWS_QPE_WM_STYLE
#ifndef QT_NO_IMAGEIO_XPM
/* XPM */
static const char * const qpe_close_xpm[] = {
"16 16 3 1",
" c None",
". c #FFFFFF",
"+ c #000000",
" ",
" ",
" ..... ",
" ..+++++.. ",
" .+++++++++. ",
" .+..+++..+. ",
" .++...+...++. ",
" .+++.....+++. ",
" .++++...++++. ",
" .+++.....+++. ",
" .++...+...++. ",
" .+..+++..+. ",
" .+++++++++. ",
" ..+++++.. ",
" ..... ",
" "};
/* XPM */
static const char * const qpe_accept_xpm[] = {
"16 16 3 1",
" c None",
". c #FFFFFF",
"+ c #000000",
" ",
" ",
" ..... ",
" ..+++++.. ",
" .+++++++++. ",
" .+++++++++. ",
@@ -183,132 +184,132 @@ bool QPEManager::eventFilter( QObject *o, QEvent *e )
}
return true;
}
break;
case QEvent::MouseMove:
if ( helpState & QWSButton::Clicked ) {
int oldState = helpState;
QPoint p = ((QMouseEvent*)e)->globalPos();
if ( pointInQpeRegion( w, p ) == QPEDecoration::Help )
helpState = QWSButton::Clicked|QWSButton::MouseOver;
else
helpState = 0;
if ( helpState != oldState )
drawButton( w, QPEDecoration::Help, helpState );
}
break;
default:
break;
}
return QObject::eventFilter( o, e );
}
void QPEManager::drawButton( QWidget *w, QPEDecoration::QPERegion r, int state )
{
QPainter painter(w);
QRegion rgn = ((TLWidget *)w)->topExtra()->decor_allocated_region;
painter.internalGfx()->setWidgetDeviceRegion( rgn );
painter.setClipRegion(decoration->region(w, w->rect(),QWSDecoration::All));
decoration->paintButton( &painter, w, (QWSDecoration::Region)r, state );
}
void QPEManager::whatsThisTimeout()
{
if ( !QWhatsThis::inWhatsThisMode() ) {
wtTimer->stop();
if ( active )
drawButton( active, QPEDecoration::Help, 0 );
} else if ( active ) {
static int state = 0;
if ( !state )
state = QWSButton::Clicked|QWSButton::MouseOver;
else
state = 0;
drawButton( active, QPEDecoration::Help, state );
}
}
//=========
class HackWidget : public QWidget
{
public:
bool needsOk() { return (getWState() & WState_Reserved1 ); }
};
//===========================================================================
QPEDecoration::QPEDecoration()
: QWSDefaultDecoration()
{
imageOk = Resource::loadImage( "OKButton" );
imageClose = Resource::loadImage( "CloseButton" );
imageHelp = Resource::loadImage( "HelpButton" );
helpFile = QString(qApp->argv()[0]) + ".html";
- QString lang = getenv( "LANG" );
- helpExists = QFile::exists( QPEApplication::qpeDir() + "/help/" + lang + "/html/" + helpFile );
- if ( !helpExists )
- helpExists = QFile::exists( QPEApplication::qpeDir() + "/help/en/html/" + helpFile );
+ QStringList path = Global::helpPath();
+ helpExists = FALSE;
+ for (QStringList::ConstIterator it=path.begin(); it!=path.end() && !helpExists; ++it)
+ helpExists = QFile::exists( *it + "/" + helpFile );
#ifndef MINIMIZE_HELP_HACK
qpeManager = new QPEManager( this );
#else
qpeManager = 0;
#endif
}
QPEDecoration::~QPEDecoration()
{
delete qpeManager;
}
const char **QPEDecoration::menuPixmap()
{
return (const char **)0;
}
const char **QPEDecoration::closePixmap()
{
return (const char **)qpe_close_xpm;
}
const char **QPEDecoration::minimizePixmap()
{
return (const char **)qpe_accept_xpm;
}
const char **QPEDecoration::maximizePixmap()
{
return (const char **)0;
}
const char **QPEDecoration::normalizePixmap()
{
return (const char **)0;
}
int QPEDecoration::getTitleHeight(const QWidget *)
{
return 15;
}
/*
If rect is empty, no frame is added. (a hack, really)
*/
QRegion QPEDecoration::region(const QWidget *widget, const QRect &rect, QWSDecoration::Region type)
{
int titleHeight = getTitleHeight(widget);
// int titleWidth = getTitleWidth(widget);
// int bw = rect.isEmpty() ? 0 : BORDER_WIDTH;
QRegion region;
#ifndef MINIMIZE_HELP_HACK
qpeManager->updateActive();
#endif
switch ((int)type) {
case Menu:
case Maximize:
break;
case Minimize: {
if ( ((HackWidget *)widget)->needsOk() ||
(widget->inherits( "QDialog" ) && !widget->inherits( "QMessageBox" ) ) ) {
QRect r(rect.right() - imageOk.width(),