setWindowOpacity( config_GetFloat( p_intf, "qt-opacity" ) );
QHBoxLayout *l = new QHBoxLayout( centralWidget() );
- QSettings *settings = new QSettings( "vlc", "vlc-qt-interface" );
- PlaylistWidget *plw = new PlaylistWidget( p_intf, settings, this );
- l->addWidget( plw );
- readSettings( "playlist", QSize( 600,700 ) );
+ settings = new QSettings( "vlc", "vlc-qt-interface" );
+ settings->beginGroup("playlistdialog");
+
+ playlistWidget = new PlaylistWidget( p_intf, settings, this );
+ l->addWidget( playlistWidget );
+
+ readSettings( settings, QSize( 600,700 ) );
+
+ settings->endGroup();
}
PlaylistDialog::~PlaylistDialog()
-{}
+{
+ settings->beginGroup("playlistdialog");
+
+ writeSettings(settings);
+ playlistWidget->savingSettings(settings);
+
+ settings->endGroup();
+ delete settings;
+}
void PlaylistDialog::dropEvent( QDropEvent *event )
{
#if 0
/* Create a Dock to get the playlist */
-/* dockPL = new QDockWidget( qtr( "Playlist" ), this );
+ dockPL = new QDockWidget( qtr( "Playlist" ), this );
dockPL->setSizePolicy( QSizePolicy::Preferred,
QSizePolicy::Expanding );
dockPL->setFeatures( QDockWidget::AllDockWidgetFeatures );
dockPL->setAllowedAreas( Qt::LeftDockWidgetArea
| Qt::RightDockWidgetArea
| Qt::BottomDockWidgetArea );
- dockPL->hide();*/
+ dockPL->hide();
#endif
/************
this, doComponentsUpdate() );
/* Size and placement of interface */
- move( settings->value( "pos", QPoint( 0, 0 ) ).toPoint() );
+ QVLCTools::restoreWidgetPosition(settings,this,QSize(350,60));
- QSize newSize = settings->value( "size", QSize( 350, 60 ) ).toSize();
- if( newSize.isValid() )
- resize( newSize );
- else
- msg_Warn( p_intf, "Invalid size in constructor" );
/* Playlist */
if( settings->value( "playlist-visible", 0 ).toInt() ) togglePlaylist();
{
msg_Dbg( p_intf, "Destroying the main interface" );
- if( playlistWidget ) playlistWidget->savingSettings( settings );
+ if( playlistWidget )
+ playlistWidget->savingSettings( settings );
settings->beginGroup( "MainWindow" );
-// settings->setValue( "playlist-floats", (int)(dockPL->isFloating()) );
+
+ // settings->setValue( "playlist-floats", (int)(dockPL->isFloating()) );
settings->setValue( "playlist-visible", (int)playlistVisible );
settings->setValue( "adv-controls",
getControlsVisibilityStatus() & CONTROLS_ADVANCED );
- settings->setValue( "pos", pos() );
+
if( !videoIsActive )
- settings->setValue( "size", size() );
+ QVLCTools::saveWidgetPosition(settings, this);
+
if( bgWidget )
settings->setValue( "backgroundSize", bgWidget->size() );
#include <QMainWindow>
#include <QPushButton>
#include <QKeyEvent>
+#include <QDesktopWidget>
#include "qt4.hpp"
#include <vlc/vlc.h>
#include <vlc_charset.h>
+class QVLCTools
+{
+ public:
+ /*
+ use this function to save a widgets screen position
+ only for windows / dialogs which are floating, if a
+ window is docked into an other - don't all this function
+ or it may write garbage to position info!
+ */
+ static void saveWidgetPosition(QSettings *settings, QWidget *widget)
+ {
+ settings->setValue("geometry", widget->saveGeometry());
+ }
+ static void saveWidgetPosition(QString configName, QWidget *widget)
+ {
+ QSettings *settings = new QSettings("vlc", "vlc-qt-interface");
+ settings->beginGroup( configName );
+ QVLCTools::saveWidgetPosition(settings, widget);
+ settings->endGroup();
+ delete settings;
+ }
+
+
+ /*
+ use this method only for restoring window state of non docked
+ windows!
+ */
+ static vlc_bool_t restoreWidgetPosition(QSettings *settings,
+ QWidget *widget,
+ QSize defSize = QSize( 0, 0 ),
+ QPoint defPos = QPoint( 0, 0 ))
+ {
+ if(!widget->restoreGeometry(settings->value("geometry")
+ .toByteArray()))
+ {
+ widget->move(defPos);
+ widget->resize(defSize);
+
+ if(defPos.x() == 0 && defPos.y()==0)
+ centerWidgetOnScreen(widget);
+ return VLC_TRUE;
+ }
+ return VLC_FALSE;
+ }
+
+ static vlc_bool_t restoreWidgetPosition(QString configName,
+ QWidget *widget,
+ QSize defSize = QSize( 0, 0 ),
+ QPoint defPos = QPoint( 0, 0 ) )
+ {
+ QSettings *settings = new QSettings( "vlc", "vlc-qt-interface" );
+ settings->beginGroup( configName );
+ vlc_bool_t defaultUsed = QVLCTools::restoreWidgetPosition(settings,
+ widget,
+ defSize,
+ defPos);
+ settings->endGroup();
+ delete settings;
+
+ return defaultUsed;
+ }
+
+ /*
+ call this method for a window or dialog to show it centred on
+ current screen
+ */
+ static void centerWidgetOnScreen(QWidget *widget)
+ {
+ QDesktopWidget * const desktop = QApplication::desktop();
+ QRect screenRect = desktop->screenGeometry(widget);
+ QPoint p1 = widget->frameGeometry().center();
+
+ widget->move ( screenRect.center() - p1 );
+ }
+};
+
class QVLCFrame : public QWidget
{
public:
QSize defSize = QSize( 0, 0 ),
QPoint defPos = QPoint( 0, 0 ) )
{
- QSettings settings( "vlc", "vlc-qt-interface" );
- settings.beginGroup( name );
- /* never trust any saved size ;-) */
- QSize newSize = settings.value( "size", defSize ).toSize();
- if( newSize.isValid() )
- resize( newSize );
- move( settings.value( "pos", defPos ).toPoint() );
- settings.endGroup();
+ QVLCTools::restoreWidgetPosition(name, this, defSize, defPos);
}
+
void writeSettings( QString name )
{
- QSettings settings( "vlc", "vlc-qt-interface" );
- settings.beginGroup( name );
- /* only save valid sizes ... */
- QSize currentsize = size();
- if( currentsize.isValid() )
- settings.setValue ("size", currentsize );
- settings.setValue( "pos", pos() );
- settings.endGroup();
+ QVLCTools::saveWidgetPosition(name, this);
}
+
virtual void cancel()
{
hide();
void readSettings( QString name, QSize defSize )
{
- QSettings settings( "vlc", "vlc-qt-interface" );
- settings.beginGroup( name );
- QSize s = settings.value( "size", defSize ).toSize() ;
- move( settings.value( "pos", QPoint( 0,0 ) ).toPoint() );
- settings.endGroup();
+ QVLCTools::restoreWidgetPosition(name, this, defSize);
}
void readSettings( QString name )
{
- QSettings settings( "vlc", "vlc-qt-interface" );
- settings.beginGroup( name );
- mainSize = settings.value( "size", QSize( 0,0 ) ).toSize();
- if( !mainSize.isValid() )
- {
- mainSize = QSize(0,0);
- }
- settings.endGroup();
+ QVLCTools::restoreWidgetPosition(name, this);
}
- void writeSettings( QString name )
+ void readSettings( QSettings *settings )
+ {
+ QVLCTools::restoreWidgetPosition(settings, this);
+ }
+
+ void readSettings( QSettings *settings, QSize defSize)
+ {
+ QVLCTools::restoreWidgetPosition(settings, this, defSize);
+ }
+
+ void writeSettings(QString name )
+ {
+ QVLCTools::saveWidgetPosition(name, this);
+ }
+
+ void writeSettings(QSettings *settings )
{
- QSettings settings( "vlc", "vlc-qt-interface" );
- settings.beginGroup( name );
- /* only save valid sizes ... */
- QSize currentsize = size();
- if( currentsize.isValid() )
- settings.setValue ("size", currentsize );
- settings.setValue( "pos", pos() );
- settings.endGroup();
+ QVLCTools::saveWidgetPosition(settings, this);
}
+
};
#endif