summaryrefslogtreecommitdiff
authorsandman <sandman>2002-06-27 20:23:25 (UTC)
committer sandman <sandman>2002-06-27 20:23:25 (UTC)
commitc9871ef295afed6bc4f4cc5451f46bf3b6e8d462 (patch) (side-by-side diff)
tree2fa3264c0a847100d1368df6e1eae2dd5b7a47ac
parent9cd1aef30015628e06e8f24b9b7e91acb631b52b (diff)
downloadopie-c9871ef295afed6bc4f4cc5451f46bf3b6e8d462.zip
opie-c9871ef295afed6bc4f4cc5451f46bf3b6e8d462.tar.gz
opie-c9871ef295afed6bc4f4cc5451f46bf3b6e8d462.tar.bz2
Enhanced liquid style:
1) All WType_Popup's now get a transparent background (volume-applet) 2) Settings/Liquid Settings - a new app that acts like the KDE Control Panel page for Liquid
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--apps/Settings/Liquid.desktop7
-rw-r--r--noncore/styles/liquid/liquid.cpp51
-rw-r--r--noncore/styles/liquid/opie-liquid.control2
-rw-r--r--noncore/styles/liquid/settings/liquidset.cpp199
-rw-r--r--noncore/styles/liquid/settings/liquidset.h39
-rw-r--r--noncore/styles/liquid/settings/main.cpp34
-rw-r--r--noncore/styles/liquid/settings/settings.pro24
-rw-r--r--pics/liquid/Liquid.pngbin0 -> 2771 bytes
8 files changed, 354 insertions, 2 deletions
diff --git a/apps/Settings/Liquid.desktop b/apps/Settings/Liquid.desktop
new file mode 100644
index 0000000..8a1727f
--- a/dev/null
+++ b/apps/Settings/Liquid.desktop
@@ -0,0 +1,7 @@
+[Desktop Entry]
+Type=Application
+Exec=liquid-settings
+Icon=liquid/Liquid
+Name=Liquid-Settings
+Name[de]=Liquid-Einstellungen
+
diff --git a/noncore/styles/liquid/liquid.cpp b/noncore/styles/liquid/liquid.cpp
index 5f014ad..4653639 100644
--- a/noncore/styles/liquid/liquid.cpp
+++ b/noncore/styles/liquid/liquid.cpp
@@ -83,12 +83,17 @@ void TransMenuHandler::reloadSettings()
color = QColor ( config. readEntry("Color", QApplication::palette().active().button().name()));
fgColor = QColor ( config. readEntry("TextColor", QApplication::palette().active().text().name()));
opacity = config. readNumEntry("Opacity", 10);
+ if ( opacity < -20 )
+ opacity = 20;
+ else if ( opacity > 20 )
+ opacity = 20;
+
shadowText = config. readBoolEntry("ShadowText", true);
}
bool TransMenuHandler::eventFilter(QObject *obj, QEvent *ev)
{
- QPopupMenu *p = (QPopupMenu *)obj;
+ QWidget *p = (QWidget *)obj;
if(ev->type() == QEvent::Show){
if(type == TransStippleBg || type == TransStippleBtn ||
@@ -118,14 +123,50 @@ bool TransMenuHandler::eventFilter(QObject *obj, QEvent *ev)
else{
QPixmapEffect::fade(*pix, (((float)opacity)+80)*0.01, color);
}
+
+ if (p->inherits("QPopupMenu"))
pixDict.insert(p->winId(), pix);
+ else {
+ p->setBackgroundPixmap(*pix);
+
+ QObjectList *ol = p-> queryList("QWidget");
+ for ( QObjectListIt it( *ol ); it. current ( ); ++it ) {
+ QWidget *wid = (QWidget *) it.current ( );
+
+ wid-> setBackgroundPixmap(*pix);
+ wid-> setBackgroundOrigin(QWidget::ParentOrigin);
+ }
+ delete ol;
+ }
}
}
else if(ev->type() == QEvent::Hide){
if(type == TransStippleBg || type == TransStippleBtn ||
type == Custom){
// qWarning("Deleting menu pixmap, width %d", pixDict.find(p->winId())->width());
+
+ if (p->inherits("QPopupMenu"))
pixDict.remove(p->winId());
+ else {
+ p->setBackgroundMode(QWidget::PaletteBackground);
+
+ QObjectList *ol = p-> queryList("QWidget");
+ for ( QObjectListIt it( *ol ); it. current ( ); ++it ) {
+ QWidget *wid = (QWidget *) it.current ( );
+
+ wid-> setBackgroundMode( QWidget::PaletteBackground );
+ }
+ delete ol;
+ }
+ }
+ }
+ else if(ev->type() == QEvent::Paint){
+ if(type == TransStippleBg || type == TransStippleBtn ||
+ type == Custom){
+// qWarning("Deleting menu pixmap, width %d", pixDict.find(p->winId())->width());
+
+ if (!p->inherits("QPopupMenu"))
+ p->erase();
}
}
return(false);
@@ -796,11 +837,16 @@ void LiquidStyle::polish(QWidget *w)
}
if(w->inherits("QPopupMenu"))
w->setBackgroundMode(QWidget::NoBackground);
+ else if(w-> testWFlags(Qt::WType_Popup)) {
+ printf("install popup: %s\n", w-> className ( ));
+ w->installEventFilter(menuHandler);
+ }
if(w->isTopLevel()){
return;
}
+
w-> setBackgroundOrigin ( QWidget::ParentOrigin );
if(w->inherits("QComboBox") ||
@@ -886,6 +932,9 @@ void LiquidStyle::unPolish(QWidget *w)
if(w->inherits("QPopupMenu"))
w->setBackgroundMode(QWidget::PaletteButton);
+ else if(w-> testWFlags(Qt::WType_Popup)) {
+ w->removeEventFilter(menuHandler);
+ }
if(w->isTopLevel())
return;
diff --git a/noncore/styles/liquid/opie-liquid.control b/noncore/styles/liquid/opie-liquid.control
index 7b6ae71..6311dee 100644
--- a/noncore/styles/liquid/opie-liquid.control
+++ b/noncore/styles/liquid/opie-liquid.control
@@ -1,4 +1,4 @@
-Files: plugins/styles/libliquid.so*
+Files: plugins/styles/libliquid.so* bin/liquid-settings apps/Settings/Liquid.desktop pics/liquid/Liquid.png
Priority: optional
Section: opie/system
Maintainer: Robert Griebl <sandman@handhelds.org>
diff --git a/noncore/styles/liquid/settings/liquidset.cpp b/noncore/styles/liquid/settings/liquidset.cpp
new file mode 100644
index 0000000..0ef5dbe
--- a/dev/null
+++ b/noncore/styles/liquid/settings/liquidset.cpp
@@ -0,0 +1,199 @@
+/**********************************************************************
+** 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.
+**
+**********************************************************************/
+
+
+
+#include "liquidset.h"
+#include "../liquid.h"
+
+#include <qpe/qpeapplication.h>
+#include <qpe/global.h>
+
+#include <qslider.h>
+#include <qtoolbutton.h>
+#include <qbuttongroup.h>
+#include <qradiobutton.h>
+#include <qcheckbox.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qpalette.h>
+
+#include <qpe/config.h>
+
+#include <opie/colorpopupmenu.h>
+
+
+static void changeButtonColor ( QWidget *btn, const QColor &col )
+{
+ QPalette pal = btn-> palette ( );
+
+ pal. setColor ( QPalette::Active, QColorGroup::Button, col );
+ pal. setColor ( QPalette::Disabled, QColorGroup::Button, col );
+ pal. setColor ( QPalette::Inactive, QColorGroup::Button, col );
+
+ btn-> setPalette ( pal );
+}
+
+
+LiquidSet::LiquidSet ( QWidget* parent, const char *name, WFlags fl )
+ : QDialog ( parent, name, fl )
+{
+ setCaption ( tr( "Liquid Style" ) );
+
+ Config config ( "qpe" );
+ config. setGroup ( "MosfetMenus" );
+
+ m_type = config. readNumEntry ( "Type", TransStippleBg );
+ m_menucol = QColor ( config. readEntry ( "Color", QApplication::palette ( ). active ( ). button ( ). name ( )));
+ m_textcol = QColor ( config. readEntry ( "TextColor", QApplication::palette ( ). active ( ). text ( ). name ( )));
+ int opacity = config. readNumEntry ( "Opacity", 10 );
+ m_shadow = config. readBoolEntry ( "ShadowText", true );
+
+ QVBoxLayout *vbox = new QVBoxLayout ( this );
+ vbox-> setSpacing ( 3 );
+ vbox-> setMargin ( 6 );
+
+ QButtonGroup *btngrp = new QButtonGroup ( this );
+ btngrp-> hide ( );
+
+ QRadioButton *rad;
+
+ rad = new QRadioButton ( tr( "No translucency" ), this );
+ btngrp-> insert ( rad, None );
+ vbox-> addWidget ( rad );
+
+ rad = new QRadioButton ( tr( "Stippled, background color" ), this );
+ btngrp-> insert ( rad, StippledBg );
+ vbox-> addWidget ( rad );
+
+ rad = new QRadioButton ( tr( "Stippled, button color" ), this );
+ btngrp-> insert ( rad, StippledBtn );
+ vbox-> addWidget ( rad );
+
+ rad = new QRadioButton ( tr( "Translucent stippled, background color" ), this );
+ btngrp-> insert ( rad, TransStippleBg );
+ vbox-> addWidget ( rad );
+
+ rad = new QRadioButton ( tr( "Translucent stippled, button color" ), this );
+ btngrp-> insert ( rad, TransStippleBtn );
+ vbox-> addWidget ( rad );
+
+ rad = new QRadioButton ( tr( "Custom translucency" ), this );
+ btngrp-> insert ( rad, Custom );
+ vbox-> addWidget ( rad );
+
+ btngrp-> setExclusive ( true );
+ btngrp-> setButton ( m_type );
+
+ QGridLayout *grid = new QGridLayout ( vbox );
+ grid-> addColSpacing ( 0, 16 );
+ grid-> addColSpacing ( 3, 8 );
+
+ grid-> addWidget ( m_menulbl = new QLabel ( tr( "Menu color" ), this ), 0, 1 );
+ grid-> addWidget ( m_textlbl = new QLabel ( tr( "Text color" ), this ), 0, 4 );
+ grid-> addWidget ( m_opaclbl = new QLabel ( tr( "Opacity" ), this ), 1, 1 );
+
+ m_menubtn = new QToolButton ( this );
+ grid-> addWidget ( m_menubtn, 0, 2 );
+
+ QPopupMenu *popup;
+
+ popup = new ColorPopupMenu ( m_menucol, this );
+ m_menubtn-> setPopup ( popup );
+ m_menubtn-> setPopupDelay ( 0 );
+ connect ( popup, SIGNAL( colorSelected ( const QColor & )), this, SLOT( changeMenuColor ( const QColor & )));
+ changeMenuColor ( m_menucol );
+
+ m_textbtn = new QToolButton ( this );
+ grid-> addWidget ( m_textbtn, 0, 5 );
+
+ popup = new ColorPopupMenu ( m_textcol, this );
+ m_textbtn-> setPopup ( popup );
+ m_textbtn-> setPopupDelay ( 0 );
+ connect ( popup, SIGNAL( colorSelected ( const QColor & )), this, SLOT( changeTextColor ( const QColor & )));
+ changeTextColor ( m_textcol );
+
+ m_opacsld = new QSlider ( Horizontal, this );
+ m_opacsld-> setRange ( -20, 20 );
+ m_opacsld-> setValue ( opacity );
+ m_opacsld-> setTickmarks ( QSlider::Below );
+ grid-> addMultiCellWidget ( m_opacsld, 1, 1, 2, 5 );
+
+ vbox-> addSpacing ( 4 );
+
+ QCheckBox *shadow = new QCheckBox ( tr( "Use shadowed text" ), this );
+ shadow-> setChecked ( m_shadow );
+ vbox-> addWidget ( shadow );
+
+ vbox-> addStretch ( 10 );
+
+ connect ( btngrp, SIGNAL( clicked ( int ) ), this, SLOT( changeType ( int ) ) );
+ connect ( shadow, SIGNAL( toggled ( bool ) ), this, SLOT( changeShadow ( bool ) ) );
+}
+
+void LiquidSet::changeType ( int t )
+{
+ bool custom = ( t == Custom );
+
+ m_menulbl-> setEnabled ( custom );
+ m_textlbl-> setEnabled ( custom );
+ m_opaclbl-> setEnabled ( custom );
+ m_menubtn-> setEnabled ( custom );
+ m_textbtn-> setEnabled ( custom );
+ m_opacsld-> setEnabled ( custom );
+
+ m_type = t;
+}
+
+void LiquidSet::changeMenuColor ( const QColor &col )
+{
+ m_menubtn-> setPalette ( col );
+ m_menucol = col;
+}
+
+void LiquidSet::changeTextColor ( const QColor &col )
+{
+ m_textbtn-> setPalette ( col );
+ m_textcol = col;
+}
+
+void LiquidSet::changeShadow ( bool b )
+{
+ m_shadow = b;
+}
+
+
+void LiquidSet::accept ( )
+{
+ Config config ( "qpe" );
+ config. setGroup ( "MosfetMenus" );
+
+ config. writeEntry ( "Type", m_type );
+ config. writeEntry ( "Color", m_menucol. name ( ));
+ config. writeEntry ( "TextColor", m_textcol. name ( ));
+ config. writeEntry ( "Opacity", m_opacsld-> value ( ));
+ config. writeEntry ( "ShadowText", m_shadow );
+ config. write ( );
+
+ Global::applyStyle ( );
+
+ QDialog::accept ( );
+}
+
diff --git a/noncore/styles/liquid/settings/liquidset.h b/noncore/styles/liquid/settings/liquidset.h
new file mode 100644
index 0000000..944b1ec
--- a/dev/null
+++ b/noncore/styles/liquid/settings/liquidset.h
@@ -0,0 +1,39 @@
+#ifndef __OPIE_LIQUID_SET_H__
+#define __OPIE_LIQUID_SET_H__
+
+#include <qdialog.h>
+#include <qcolor.h>
+
+class QLabel;
+class QToolButton;
+class QSlider;
+
+class LiquidSet : public QDialog {
+ Q_OBJECT
+
+public:
+ LiquidSet ( QWidget *parent = 0, const char *name = 0, WFlags fl = 0 );
+
+public slots:
+ void changeType ( int t );
+ void changeMenuColor ( const QColor &col );
+ void changeTextColor ( const QColor &col );
+ void changeShadow ( bool b );
+
+protected:
+ virtual void accept ( );
+
+private:
+ QColor m_menucol;
+ QColor m_textcol;
+ int m_type;
+ bool m_shadow;
+
+ QSlider * m_opacsld;
+ QLabel * m_menulbl;
+ QLabel * m_textlbl;
+ QLabel * m_opaclbl;
+ QToolButton *m_menubtn;
+ QToolButton *m_textbtn;
+};
+#endif
diff --git a/noncore/styles/liquid/settings/main.cpp b/noncore/styles/liquid/settings/main.cpp
new file mode 100644
index 0000000..fd69007
--- a/dev/null
+++ b/noncore/styles/liquid/settings/main.cpp
@@ -0,0 +1,34 @@
+/**********************************************************************
+** 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.
+**
+**********************************************************************/
+
+#include "liquidset.h"
+
+#include <qpe/qpeapplication.h>
+
+
+int main ( int argc, char** argv )
+{
+ QPEApplication a ( argc, argv );
+
+ LiquidSet dlg;
+ a. showMainWidget ( &dlg );
+
+ return a. exec ( );
+}
diff --git a/noncore/styles/liquid/settings/settings.pro b/noncore/styles/liquid/settings/settings.pro
new file mode 100644
index 0000000..b385d92
--- a/dev/null
+++ b/noncore/styles/liquid/settings/settings.pro
@@ -0,0 +1,24 @@
+TEMPLATE = app
+CONFIG += qt warn_on release
+DESTDIR = $(OPIEDIR)/bin
+HEADERS = liquidset.h
+SOURCES = liquidset.cpp main.cpp
+INCLUDEPATH += $(OPIEDIR)/include
+DEPENDPATH += ../$(OPIEDIR)/include
+LIBS += -lqpe -lopie
+TARGET = liquid-settings
+
+TRANSLATIONS = ../../../i18n/de/liquid-settings.ts \
+ ../../../i18n/en/liquid-settings.ts \
+ ../../../i18n/es/liquid-settings.ts \
+ ../../../i18n/fr/liquid-settings.ts \
+ ../../../i18n/hu/liquid-settings.ts \
+ ../../../i18n/ja/liquid-settings.ts \
+ ../../../i18n/ko/liquid-settings.ts \
+ ../../../i18n/no/liquid-settings.ts \
+ ../../../i18n/pl/liquid-settings.ts \
+ ../../../i18n/pt/liquid-settings.ts \
+ ../../../i18n/pt_BR/liquid-settings.ts \
+ ../../../i18n/sl/liquid-settings.ts \
+ ../../../i18n/zh_CN/liquid-settings.ts \
+ ../../../i18n/zh_TW/liquid-settings.ts
diff --git a/pics/liquid/Liquid.png b/pics/liquid/Liquid.png
new file mode 100644
index 0000000..67647d0
--- a/dev/null
+++ b/pics/liquid/Liquid.png
Binary files differ