The beginning of a settings window. Only application settings for now

This commit is contained in:
Tobias Rundstrom 2006-03-04 21:23:15 -03:00
parent 002867c17b
commit 2ae3f3bf7e
8 changed files with 265 additions and 22 deletions

142
SettingsWindow.cpp Normal file
View file

@ -0,0 +1,142 @@
#include "MainWindow.h"
#include "SettingsWindow.h"
#include <QCheckBox>
#include <QSettings>
SettingsWindow::SettingsWindow (QWidget *parent) : QMainWindow (parent)
{
#ifndef _WIN32
setWindowIcon (QIcon (":icon.png"));
#endif
resize (400, 300);
QWidget *dummy = new QWidget (this);
setCentralWidget (dummy);
QVBoxLayout *vbox = new QVBoxLayout (dummy);
QTabWidget *tab = new QTabWidget (dummy);
vbox->addWidget (tab);
QWidget *dummy2 = new QWidget (dummy);
QHBoxLayout *hbox = new QHBoxLayout (dummy2);
vbox->addWidget (dummy2);
QPushButton *cancel = new QPushButton (tr ("Cancel"));
cancel->setSizePolicy (QSizePolicy (QSizePolicy::Fixed, QSizePolicy::Fixed));
QPushButton *ok = new QPushButton (tr ("OK"));
ok->setSizePolicy (QSizePolicy (QSizePolicy::Fixed, QSizePolicy::Fixed));
connect (ok, SIGNAL (clicked ()), this, SLOT (okButton ()));
hbox->addWidget (new QWidget (dummy2), 1);
hbox->addWidget (cancel);
hbox->addWidget (ok);
m_mainwindow = new SettingsTabMain (tab);
m_playlistwin = new QWidget (tab);
m_medialib = new QWidget (tab);
tab->addTab (m_mainwindow, tr ("Main Window"));
tab->addTab (m_playlistwin, tr ("Playlist Window"));
tab->addTab (m_medialib, tr ("Medialib"));
}
void
SettingsWindow::okButton (void)
{
XMMSHandler *xmmsh = XMMSHandler::getInstance ();
m_mainwindow->saveSettings ();
close ();
xmmsh->updateSettings ();
}
SettingsTabMain::SettingsTabMain (QWidget *parent) : QWidget (parent)
{
QSettings s;
QVBoxLayout *vbox = new QVBoxLayout (this);
QWidget *c = new QWidget (this);
QHBoxLayout *h = new QHBoxLayout (c);
vbox->addWidget (c);
s.beginGroup ("maindisplay");
m_scrolltbar = new QCheckBox (tr ("Scroll titlebar"), this);
if (s.value("scrollbar").toBool ())
m_scrolltbar->setCheckState (Qt::Checked);
else
m_scrolltbar->setCheckState (Qt::Unchecked);
h->addWidget (m_scrolltbar);
m_fontsize = new QSpinBox (this);
m_fontsize->setSizePolicy (QSizePolicy (QSizePolicy::Fixed, QSizePolicy::Fixed));
m_fontsize->setMinimum (6);
m_fontsize->setMaximum (20);
m_fontsize->setValue (s.value("fontsize").toInt ());
h->addWidget (m_fontsize);
QLabel *l = new QLabel (tr ("Titlebar fontsize"), this);
l->setSizePolicy (QSizePolicy (QSizePolicy::Fixed, QSizePolicy::Fixed));
h->addWidget (l);
QFrame *f = new QFrame (this);
f->setFrameStyle (QFrame::HLine | QFrame::Raised);
vbox->addWidget (f, 1);
c = new QWidget (this);
h = new QHBoxLayout (c);
vbox->addWidget (c);
m_mainttf = new QCheckBox (tr ("Draw main title with TrueType fonts"), this);
m_mainttf->setCheckState (s.value ("mainttf").toBool () ? Qt::Checked : Qt::Unchecked);
h->addWidget (m_mainttf);
/*
c = new QWidget (this);
h = new QHBoxLayout (c);
vbox->addWidget (c);
m_shadettf = new QCheckBox (tr ("Draw shaded title with TrueType fonts"), this);
m_shadettf->setCheckState (s.value ("shadettf").toBool () ? Qt::Checked : Qt::Unchecked);
h->addWidget (m_shadettf);
*/
f = new QFrame (this);
f->setFrameStyle (QFrame::HLine | QFrame::Raised);
vbox->addWidget (f, 1);
c = new QWidget (this);
h = new QHBoxLayout (c);
vbox->addWidget (c);
m_quitonclose = new QCheckBox (tr ("Quit XMMS2D when closing Promoe"));
if (s.contains ("quitonclose"))
s.setValue ("quitonclose", false);
m_quitonclose->setCheckState (s.value ("quitonclose").toBool () ? Qt::Checked : Qt::Unchecked);
h->addWidget (m_quitonclose);
s.endGroup ();
}
void
SettingsTabMain::saveSettings (void)
{
QSettings s;
s.beginGroup ("maindisplay");
s.setValue ("scrollbar", m_scrolltbar->checkState () == Qt::Checked);
s.setValue ("fontsize", m_fontsize->value ());
s.setValue ("quitonclose", m_quitonclose->checkState () == Qt::Checked);
s.setValue ("mainttf", m_mainttf->checkState () == Qt::Checked);
s.endGroup ();
}

46
SettingsWindow.h Normal file
View file

@ -0,0 +1,46 @@
#ifndef __SETTINGSWINDOW_H__
#define __SETTINGSWINDOW_H__
#include <QMainWindow>
#include <QTabWidget>
#include <QPushButton>
#include <QVBoxLayout>
#include <QCheckBox>
#include <QHBoxLayout>
#include <QSpinBox>
#include <QLabel>
class SettingsTabMain : public QWidget {
Q_OBJECT
public:
SettingsTabMain (QWidget *parent);
~SettingsTabMain () {}
void saveSettings (void);
private:
QCheckBox *m_scrolltbar;
QSpinBox *m_fontsize;
QCheckBox *m_quitonclose;
QCheckBox *m_mainttf;
QCheckBox *m_shadettf;
};
class SettingsWindow : public QMainWindow {
Q_OBJECT
public:
SettingsWindow (QWidget *parent);
~SettingsWindow () {}
public slots:
void okButton (void);
private:
SettingsTabMain *m_mainwindow;
QWidget *m_playlistwin;
QWidget *m_medialib;
};
#endif

View file

@ -4,21 +4,37 @@
TextScroller::TextScroller (QWidget *parent, uint w, uint h) : QWidget (parent)
{
XMMSHandler *xmmsh = XMMSHandler::getInstance ();
Skin *skin = Skin::getInstance ();
connect (skin, SIGNAL (skinChanged (Skin *)),
this, SLOT (setPixmaps(Skin *)));
QSettings s;
s.beginGroup ("maindisplay");
if (!s.contains("scrollbar"))
s.setValue("scrollbar", true);
if (!s.contains("fontsize"))
s.setValue("fontsize", 8);
if (!s.contains("mainttf"))
s.setValue("mainttf", true);
if (!s.contains("shadettf"))
s.setValue("shadettf", true);
m_h = h;
m_w = w;
m_x_off = 0;
m_x2_off = 0;
#ifdef Q_OS_MACX
m_fontsize = 9;
#else
m_fontsize = 8; /* default */
#endif
m_ttf = true;
m_fontsize = s.value ("fontsize").toInt ();
m_ttf = s.value ("mainttf").toBool ();
m_text = "Promoe 0.1";
s.endGroup ();
setMinimumSize(m_w + 2, m_h);
setMaximumSize(m_w + 2, m_h);
@ -31,7 +47,20 @@ TextScroller::TextScroller (QWidget *parent, uint w, uint h) : QWidget (parent)
m_timer = new QTimer (this);
connect (m_timer, SIGNAL (timeout()), this, SLOT (addOffset ()));
connect (xmmsh, SIGNAL (settingsSaved ()), this, SLOT (settingsSaved ()));
}
void
TextScroller::settingsSaved (void)
{
QSettings s;
s.beginGroup ("maindisplay");
m_fontsize = s.value ("fontsize").toInt ();
m_ttf = s.value ("mainttf").toBool ();
s.endGroup ();
setText (m_text);
update ();
}
void
@ -43,7 +72,7 @@ TextScroller::setPixmaps (Skin *skin)
pal.setBrush (QPalette::Window, b);
setPalette (pal);
setText (QString::fromUtf8 ("Promoe 0.1"));
setText (m_text);
update();
}
void
@ -63,8 +92,10 @@ TextScroller::addOffset ()
}
void
TextScroller::setText (const QString &text)
TextScroller::setText (QString text)
{
m_text = text;
if (m_ttf) {
drawQtFont (text);
} else {
@ -76,12 +107,12 @@ TextScroller::setText (const QString &text)
}
void
TextScroller::drawBitmapFont (const QString &text)
TextScroller::drawBitmapFont (QString text)
{
Skin *skin = Skin::getInstance ();
int width = text.length() * 6;
QString (temp) = text.toLower ();
QString temp = text.toLower ();
if (width > m_w) {
temp += QString::fromAscii (" -- ");
@ -91,29 +122,36 @@ TextScroller::drawBitmapFont (const QString &text)
} else {
m_pixmap = QPixmap (m_w, m_h);
}
const char *t = temp.toLatin1();
QByteArray temp2 = temp.toLatin1();
const char *t = temp2.data();
QPainter (paint);
paint.begin (&m_pixmap);
paint.fillRect (m_pixmap.rect(), Qt::white);
paint.drawPixmap (m_pixmap.rect (),
skin->getItem (Skin::TEXTBG),
skin->getItem (Skin::TEXTBG).rect ());
for (uint i = 0; i < strlen (t); i++) {
QPixmap p = skin->getLetter (t[i]);
if (!p) {
if (p.isNull ()) {
p = skin->getLetter(' ');
if (p.isNull ()) {
qDebug ("abort ffs!");
}
}
paint.drawPixmap (QRect (i * 6, m_y, 4, 6),
paint.drawPixmap (QRect ((i * 6), m_y, 4, 6),
p, p.rect());
}
paint.end();
m_pixmap.setMask (m_pixmap.createHeuristicMask ());
}
void
TextScroller::drawQtFont (const QString &text)
TextScroller::drawQtFont (QString text)
{
Skin *skin = Skin::getInstance ();

View file

@ -22,13 +22,14 @@ class TextScroller : public QWidget
TextScroller (QWidget *parent, uint, uint);
~TextScroller ();
void setText(const QString &text);
void setText(QString text);
void setFontSize (int i) { m_fontsize = i; }
void setTTF (bool b) { m_ttf = b; }
public slots:
void addOffset ();
void setPixmaps(Skin *skin);
void settingsSaved (void);
protected:
QPixmap m_pixmap;
@ -44,9 +45,10 @@ class TextScroller : public QWidget
bool m_ttf;
QTimer *m_timer;
QString m_text;
void drawBitmapFont (const QString &text);
void drawQtFont (const QString &text);
void drawBitmapFont (QString text);
void drawQtFont (QString text);
};
#endif

View file

@ -3,6 +3,7 @@
#include "Display.h"
#include "SkinChooser.h"
#include "Medialib.h"
#include "SettingsWindow.h"
#include <QMenu>
@ -50,6 +51,7 @@ TitleBar::showMenu (void)
qm.addAction (a);
a = new QAction (tr ("Application settings"), this);
a->setShortcut (tr ("Alt+A"));
connect (a, SIGNAL (triggered ()), this, SLOT (showSettings ()));
qm.addAction (a);
a = new QAction (tr ("Server settings"), this);
a->setShortcut (tr ("Alt+S"));
@ -71,6 +73,13 @@ TitleBar::showMlib ()
mw->show ();
}
void
TitleBar::showSettings ()
{
SettingsWindow *sw = new SettingsWindow (window ());
sw->show ();
}
void
TitleBar::showTheme ()
{

View file

@ -21,6 +21,7 @@ class TitleBar : public PixWidget
void showMenu (void);
void showTheme (void);
void showMlib (void);
void showSettings (void);
protected:
void mouseDoubleClickEvent (QMouseEvent *event);

View file

@ -36,6 +36,8 @@ class XMMSHandler : public QObject, public sigc::trackable {
const XMMSClient *getXMMS () { return m_xmmsc; }
void updateSettings (void) { emit settingsSaved (); }
public slots:
void setPlaytime ();
void fileOpen (void);
@ -53,6 +55,7 @@ class XMMSHandler : public QObject, public sigc::trackable {
}
signals:
void settingsSaved (void);
void playbackStatusChanged (uint status);
void playtimeChanged (uint time);
void mediainfoChanged (uint, QHash<QString, QString>);

View file

@ -19,7 +19,8 @@ SOURCES += XmmsQT4.cpp \
SkinChooser.cpp \
PlaylistShade.cpp \
Medialib.cpp \
qtmd5.cpp
qtmd5.cpp \
SettingsWindow.cpp
HEADERS += XmmsQT4.h \
PixWidget.h \
@ -42,7 +43,8 @@ HEADERS += XmmsQT4.h \
SkinChooser.h \
PlaylistShade.h \
Medialib.h \
qtmd5.h
qtmd5.h \
SettingsWindow.h
RESOURCES = promoe.qrc
@ -53,7 +55,7 @@ macx:QTPLUGIN += qjpeg
QMAKE_LFLAGS += -L$$[QT_INSTALL_PLUGINS]/imageformats
CONFIG += link_pkgconfig
CXXFLAGS += -g
QMAKE_CXXFLAGS += -g
;CONFIG += debug warn_on
QMAKE_CXXFLAGS_WARN_ON += -Wno-unused-parameter
PKGCONFIG += xmms2-client xmms2-client-cpp sigc++-2.0