void GraphicalSummaryWnd::DoLayout() { GG::Pt ul(GG::X0, SIDE_BOX_MARGIN); if(!m_options_bar) { m_options_bar = new OptionsBar(m_sizer); AttachChild(m_options_bar); GG::Connect( m_options_bar->ChangedSignal, &GraphicalSummaryWnd::DoLayout, this ); } m_options_bar->Resize( GG::Pt( ClientWidth(), OPTION_BAR_HEIGHT ) ); GG::Pt space_for_bars = ClientSize(); space_for_bars.y -= m_options_bar->Height(); m_sizer->SetAvailableSize(space_for_bars); m_options_bar->DoLayout(); for(std::vector<SideBar*>::iterator it = m_side_boxes.begin(); it != m_side_boxes.end(); ++it ) { SideBar* box = *it; box->MoveTo(ul); box->DoLayout(); ul.y += box->Height() + SIDE_BOX_MARGIN; } m_options_bar->MoveTo(GG::Pt(GG::X(10), ClientSize().y - m_options_bar->Height() )); }
void GraphicalSummaryWnd::DoLayout() { if (!m_sizer || !m_options_bar) return; GG::Pt ul(GG::X0, SIDE_BOX_MARGIN); m_options_bar->Resize( GG::Pt( ClientWidth(), OPTION_BAR_HEIGHT ) ); GG::Pt space_for_bars = ClientSize(); space_for_bars.y -= m_options_bar->Height(); m_sizer->SetAvailableSize(space_for_bars); m_options_bar->DoLayout(); for (std::vector<SideBar*>::iterator it = m_side_boxes.begin(); it != m_side_boxes.end(); ++it ) { SideBar* box = *it; box->MoveTo(ul); box->DoLayout(); ul.y += box->Height() + SIDE_BOX_MARGIN; } m_options_bar->MoveTo(GG::Pt(GG::X(4), ClientSize().y - m_options_bar->Height())); }
MainWindow::MainWindow() : m_workspace( NULL ), m_templatesMenu( NULL ), m_recentlyOpenedProjectsMenu( NULL ), m_toolsMenu( NULL ), m_autoSaveTimer( this ), m_viewMenu( NULL ), m_metronomeToggle( 0 ), m_session( Normal ) { setAttribute( Qt::WA_DeleteOnClose ); QWidget * main_widget = new QWidget( this ); QVBoxLayout * vbox = new QVBoxLayout( main_widget ); vbox->setSpacing( 0 ); vbox->setMargin( 0 ); QWidget * w = new QWidget( main_widget ); QHBoxLayout * hbox = new QHBoxLayout( w ); hbox->setSpacing( 0 ); hbox->setMargin( 0 ); SideBar * sideBar = new SideBar( Qt::Vertical, w ); QSplitter * splitter = new QSplitter( Qt::Horizontal, w ); splitter->setChildrenCollapsible( false ); ConfigManager* confMgr = ConfigManager::inst(); emit initProgress(tr("Preparing plugin browser")); sideBar->appendTab( new PluginBrowser( splitter ) ); emit initProgress(tr("Preparing file browsers")); sideBar->appendTab( new FileBrowser( confMgr->userProjectsDir() + "*" + confMgr->factoryProjectsDir(), "*.mmp *.mmpz *.xml *.mid", tr( "My Projects" ), embed::getIconPixmap( "project_file" ).transformed( QTransform().rotate( 90 ) ), splitter, false, true ) ); sideBar->appendTab( new FileBrowser( confMgr->userSamplesDir() + "*" + confMgr->factorySamplesDir(), "*", tr( "My Samples" ), embed::getIconPixmap( "sample_file" ).transformed( QTransform().rotate( 90 ) ), splitter, false, true ) ); sideBar->appendTab( new FileBrowser( confMgr->userPresetsDir() + "*" + confMgr->factoryPresetsDir(), "*.xpf *.cs.xml *.xiz", tr( "My Presets" ), embed::getIconPixmap( "preset_file" ).transformed( QTransform().rotate( 90 ) ), splitter , false, true ) ); sideBar->appendTab( new FileBrowser( QDir::homePath(), "*", tr( "My Home" ), embed::getIconPixmap( "home" ).transformed( QTransform().rotate( 90 ) ), splitter, false, false ) ); QStringList root_paths; QString title = tr( "Root directory" ); bool dirs_as_items = false; #ifdef LMMS_BUILD_APPLE title = tr( "Volumes" ); root_paths += "/Volumes"; #elif defined(LMMS_BUILD_WIN32) title = tr( "My Computer" ); dirs_as_items = true; #endif #if ! defined(LMMS_BUILD_APPLE) QFileInfoList drives = QDir::drives(); for( const QFileInfo & drive : drives ) { root_paths += drive.absolutePath(); } #endif sideBar->appendTab( new FileBrowser( root_paths.join( "*" ), "*", title, embed::getIconPixmap( "computer" ).transformed( QTransform().rotate( 90 ) ), splitter, dirs_as_items) ); m_workspace = new QMdiArea( splitter ); // Load background emit initProgress(tr("Loading background artwork")); QString bgArtwork = ConfigManager::inst()->backgroundArtwork(); QImage bgImage; if( !bgArtwork.isEmpty() ) { bgImage = QImage( bgArtwork ); } if( !bgImage.isNull() ) { m_workspace->setBackground( bgImage ); } else { m_workspace->setBackground( Qt::NoBrush ); } m_workspace->setOption( QMdiArea::DontMaximizeSubWindowOnActivation ); m_workspace->setHorizontalScrollBarPolicy( Qt::ScrollBarAsNeeded ); m_workspace->setVerticalScrollBarPolicy( Qt::ScrollBarAsNeeded ); hbox->addWidget( sideBar ); hbox->addWidget( splitter ); // create global-toolbar at the top of our window m_toolBar = new QWidget( main_widget ); m_toolBar->setObjectName( "mainToolbar" ); m_toolBar->setFixedHeight( 64 ); m_toolBar->move( 0, 0 ); // add layout for organizing quite complex toolbar-layouting m_toolBarLayout = new QGridLayout( m_toolBar/*, 2, 1*/ ); m_toolBarLayout->setMargin( 0 ); m_toolBarLayout->setSpacing( 0 ); vbox->addWidget( m_toolBar ); vbox->addWidget( w ); setCentralWidget( main_widget ); m_updateTimer.start( 1000 / 20, this ); // 20 fps if( !ConfigManager::inst()->value( "ui", "disableautosave" ).toInt() ) { // connect auto save connect(&m_autoSaveTimer, SIGNAL(timeout()), this, SLOT(autoSave())); m_autoSaveInterval = ConfigManager::inst()->value( "ui", "saveinterval" ).toInt() < 1 ? DEFAULT_AUTO_SAVE_INTERVAL : ConfigManager::inst()->value( "ui", "saveinterval" ).toInt(); // The auto save function mustn't run until there is a project // to save or it will run over recover.mmp if you hesitate at the // recover messagebox for a minute. It is now started in main. // See autoSaveTimerReset() in MainWindow.h } connect( Engine::getSong(), SIGNAL( playbackStateChanged() ), this, SLOT( updatePlayPauseIcons() ) ); }