* store windows sizes in the vlc configuration file
authorEric Petit <titer@videolan.org>
Sat, 25 Jan 2003 01:03:44 +0000 (01:03 +0000)
committerEric Petit <titer@videolan.org>
Sat, 25 Jan 2003 01:03:44 +0000 (01:03 +0000)
 * fixed an interface bug when launching a file from the command line
 * minor fixes or enhancements

modules/gui/beos/BeOS.cpp
modules/gui/beos/InterfaceWindow.cpp
modules/gui/beos/MediaControlView.cpp
modules/gui/beos/MediaControlView.h

index 9f5f1b1..5fab6b6 100644 (file)
@@ -2,7 +2,7 @@
  * beos.cpp : BeOS plugin for vlc
  *****************************************************************************
  * Copyright (C) 2000, 2001 VideoLAN
- * $Id: BeOS.cpp,v 1.2 2002/09/30 18:30:27 titer Exp $
+ * $Id: BeOS.cpp,v 1.3 2003/01/25 01:03:44 titer Exp $
  *
  * Authors: Jean-Marc Dressler <polux@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
@@ -50,6 +50,15 @@ vlc_module_begin();
     add_submodule();
         set_capability( "interface", 100 );
         set_callbacks( E_(OpenIntf), E_(CloseIntf) );
+        add_integer( "beos-intf-width", 0, NULL, "", "" );
+        add_integer( "beos-intf-height", 0, NULL, "", "" );
+        add_integer( "beos-intf-xpos", 0, NULL, "", "" );
+        add_integer( "beos-intf-ypos", 0, NULL, "", "" );
+        add_integer( "beos-playlist-width", 0, NULL, "", "" );
+        add_integer( "beos-playlist-height", 0, NULL, "", "" );
+        add_integer( "beos-playlist-xpos", 0, NULL, "", "" );
+        add_integer( "beos-playlist-ypos", 0, NULL, "", "" );
+        add_bool( "beos-playlist-show", 0, NULL, "", "" );
     add_submodule();                                     
         set_capability( "video output", 100 );
         set_callbacks( E_(OpenVideo), E_(CloseVideo) );
index 8746a42..7807403 100644 (file)
@@ -2,7 +2,7 @@
  * InterfaceWindow.cpp: beos interface
  *****************************************************************************
  * Copyright (C) 1999, 2000, 2001 VideoLAN
- * $Id: InterfaceWindow.cpp,v 1.20 2003/01/22 01:13:22 titer Exp $
+ * $Id: InterfaceWindow.cpp,v 1.21 2003/01/25 01:03:44 titer Exp $
  *
  * Authors: Jean-Marc Dressler <polux@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
@@ -70,7 +70,7 @@ InterfaceWindow::InterfaceWindow( BRect frame, const char *name,
     p_wrapper = p_intf->p_sys->p_wrapper;
     p_intf->p_sys->b_dvdold = false;
     
-    fPlaylistIsEmpty = ( p_wrapper->PlaylistSize() < 0 );
+    fPlaylistIsEmpty = !( p_wrapper->PlaylistSize() > 0 );
     
     fPlaylistWindow = new PlayListWindow( BRect( 100.0, 100.0, 400.0, 350.0 ),
                                                                                  "Playlist",
@@ -96,7 +96,6 @@ InterfaceWindow::InterfaceWindow( BRect frame, const char *name,
        p_mediaControl = new MediaControlView( BRect( 0.0, 0.0, 250.0, 50.0 ),
                                               p_intf );
        p_mediaControl->SetViewColor( ui_color( B_PANEL_BACKGROUND_COLOR ) );
-       p_mediaControl->SetEnabled( !fPlaylistIsEmpty );
 
        float width, height;
        p_mediaControl->GetPreferredSize( &width, &height );
@@ -181,10 +180,41 @@ InterfaceWindow::InterfaceWindow( BRect frame, const char *name,
         new BMenuItem( "Preferences", new BMessage( OPEN_PREFERENCES ) ) );
        fMenuBar->AddItem( fSettingsMenu );                                                     
 
-       // prepare fow showing
+       /* Prepare fow showing */
        _SetMenusEnabled( false );
        p_mediaControl->SetEnabled( false );
-
+       
+    /* Restore interface settings */
+    int i_width = config_GetInt( p_intf, "beos-intf-width" ),
+        i_height = config_GetInt( p_intf, "beos-intf-height" ),
+        i_xpos = config_GetInt( p_intf, "beos-intf-xpos" ),
+        i_ypos = config_GetInt( p_intf, "beos-intf-ypos" );
+    if( i_width && i_height && i_xpos && i_ypos )
+    {
+        /* main window size and position */
+        ResizeTo( i_width, i_height );
+        MoveTo( i_xpos, i_ypos );
+    }
+    i_width = config_GetInt( p_intf, "beos-playlist-width" ),
+    i_height = config_GetInt( p_intf, "beos-playlist-height" ),
+    i_xpos = config_GetInt( p_intf, "beos-playlist-xpos" ),
+    i_ypos = config_GetInt( p_intf, "beos-playlist-ypos" );
+    if( i_width && i_height && i_xpos && i_ypos )
+    {
+        /* playlist window size and position */
+        fPlaylistWindow->ResizeTo( i_width, i_height );
+        fPlaylistWindow->MoveTo( i_xpos, i_ypos );
+    }
+    if( config_GetInt( p_intf, "beos-playlist-show" ) )
+    {
+        /* playlist showing */
+        if( fPlaylistWindow->Lock() )
+        {
+            fPlaylistWindow->Show();
+            fPlaylistWindow->Unlock();
+        }
+    }
+       
        Show();
 }
 
@@ -552,7 +582,25 @@ bool InterfaceWindow::QuitRequested()
 {
        p_wrapper->PlaylistStop();
        p_mediaControl->SetStatus(NOT_STARTED_S, DEFAULT_RATE);
-       
+
+    /* Save interface settings */
+    BRect frame = Frame();
+    config_PutInt( p_intf, "beos-intf-width", (int)frame.Width() );
+    config_PutInt( p_intf, "beos-intf-height", (int)frame.Height() );
+    config_PutInt( p_intf, "beos-intf-xpos", (int)frame.left );
+    config_PutInt( p_intf, "beos-intf-ypos", (int)frame.top );
+    if( fPlaylistWindow->Lock() )
+    {
+        frame = fPlaylistWindow->Frame();
+        config_PutInt( p_intf, "beos-playlist-width", (int)frame.Width() );
+        config_PutInt( p_intf, "beos-playlist-height", (int)frame.Height() );
+        config_PutInt( p_intf, "beos-playlist-xpos", (int)frame.left );
+        config_PutInt( p_intf, "beos-playlist-ypos", (int)frame.top );
+        config_PutInt( p_intf, "beos-playlist-show", !fPlaylistWindow->IsHidden() );
+        fPlaylistWindow->Unlock();
+    }
+    config_SaveConfigFile( p_intf, "beos" );
+    
        p_intf->b_die = 1;
 
        return( true );
@@ -571,7 +619,7 @@ void InterfaceWindow::updateInterface()
                }
                else if ( Lock() )
                {
-//                     p_mediaControl->SetEnabled( true );
+                       p_mediaControl->SetEnabled( true );
                        bool hasTitles = p_wrapper->HasTitles();
                        bool hasChapters = p_wrapper->HasChapters();
                        p_mediaControl->SetStatus( p_wrapper->InputStatus(), 
@@ -606,14 +654,18 @@ void InterfaceWindow::updateInterface()
     else
     {
        _SetMenusEnabled( false );
-//             p_mediaControl->SetEnabled( false );
+       if( !( p_wrapper->PlaylistSize() > 0 ) )
+                  p_mediaControl->SetEnabled( false );
+               else
+                   p_mediaControl->SetProgress( 0 );
     }
 
     /* always force the user-specified volume */
     /* FIXME : I'm quite sure there is a cleaner way to do this */
-    if( p_wrapper->GetVolume() != p_mediaControl->GetVolume() )
+    int i_volume = p_mediaControl->GetVolume();
+    if( p_wrapper->GetVolume() != i_volume )
     {
-        p_wrapper->SetVolume( p_mediaControl->GetVolume() );
+        p_wrapper->SetVolume( i_volume );
     }
 
        fLastUpdateTime = system_time();
index 6997515..ccbb319 100644 (file)
@@ -2,7 +2,7 @@
  * MediaControlView.cpp: beos interface
  *****************************************************************************
  * Copyright (C) 1999, 2000, 2001 VideoLAN
- * $Id: MediaControlView.cpp,v 1.12 2003/01/24 06:31:56 titer Exp $
+ * $Id: MediaControlView.cpp,v 1.13 2003/01/25 01:03:44 titer Exp $
  *
  * Authors: Tony Castley <tony@castley.net>
  *          Stephan Aßmus <stippi@yellowbites.com>
@@ -78,7 +78,8 @@ MediaControlView::MediaControlView(BRect frame, intf_thread_t *p_interface)
       fScrubSem(B_ERROR),
       fCurrentRate(DEFAULT_RATE),
       fCurrentStatus(UNDEF_S),
-      fBottomControlHeight(0.0)
+      fBottomControlHeight(0.0),
+      fIsEnabled( true )
 {
     p_intf = p_interface;
 
@@ -325,7 +326,14 @@ MediaControlView::SetStatus(int status, int rate)
 void
 MediaControlView::SetEnabled(bool enabled)
 {
-       if ( LockLooper() )
+    if( ( enabled && fIsEnabled ) ||
+        ( !enabled && !fIsEnabled ) )
+    {
+        /* do not redraw if it is not necessary */
+        return;
+    }
+    
+       if( LockLooper() )
        {
                fSkipBack->SetEnabled( enabled );
                fPlayPause->SetEnabled( enabled );
@@ -337,6 +345,7 @@ MediaControlView::SetEnabled(bool enabled)
                fRewind->SetEnabled( enabled );
                fForward->SetEnabled( enabled );
                UnlockLooper();
+               fIsEnabled = enabled;
        }
 }
 
@@ -764,7 +773,9 @@ SeekSlider::ResizeToPreferred()
 void
 SeekSlider::SetPosition(float position)
 {
+    LockLooper();
        SetValue(fMinValue + (int32)floorf((fMaxValue - fMinValue) * position + 0.5));
+       UnlockLooper();
 }
 
 /*****************************************************************************
index b30f55f..7da17d7 100644 (file)
@@ -2,7 +2,7 @@
  * MediaControlView.h: beos interface
  *****************************************************************************
  * Copyright (C) 1999, 2000, 2001 VideoLAN
- * $Id: MediaControlView.h,v 1.4 2003/01/12 02:08:39 titer Exp $
+ * $Id: MediaControlView.h,v 1.5 2003/01/25 01:03:44 titer Exp $
  *
  * Authors: Tony Castley <tony@castley.net>
  *          Stephan Aßmus <stippi@yellowbites.com>
@@ -86,6 +86,7 @@ class MediaControlView : public BBox
                        int                                     fCurrentStatus;
                        float                           fBottomControlHeight;
                        BRect                           fOldBounds;
+                       bool                fIsEnabled;
                        
                        intf_thread_t *     p_intf;
 };