void ScreenManager::hideScreen()
{
    CatanScreen *screen = qobject_cast<CatanScreen*>(sender());
    if( !screen ) return;

    screen->setVisible(false);

    disconnect( screen, SIGNAL(SlideFinished()),
                this, SLOT(hideScreen()));

    activeScreen->setEnabled(true);
}
void ScreenManager::SetScreen(SCREEN_NAME::ENUM screen)
{
    //if( !screenMap.contains(screen) )
    //{
    //    LOG_ERROR( "Tried to set active screen to non-existant screen");
    //    return;
    //}
    CatanScreen *newScreen = screenMap[screen];
    Q_ASSERT( newScreen );

    if( activeScreen == newScreen )
        return;

    if( activeScreen )
    {
        QPoint deltaPos = newScreen->GetPos() - activeScreen->GetPos();

        activeScreen->SlideTo(QPoint(mainWindow->width()*-deltaPos.x(),
                                     mainWindow->height()*-deltaPos.y()),
                                     ScreenTransitionSpeed //speed
                              );
        activeScreen->setEnabled(false);
        activeScreen->SetActive(false);
        activeScreen->setFocusPolicy(Qt::NoFocus);

        newScreen->move(QPoint(mainWindow->width()*deltaPos.x(),
                               mainWindow->height()*deltaPos.y()));
        newScreen->SlideTo(QPoint(0,0), ScreenTransitionSpeed);

        connect( activeScreen, SIGNAL(SlideFinished()),
                 this, SLOT(hideScreen()) );
    }
    else
    {
        newScreen->move(QPoint(0,0));
        newScreen->setEnabled(true);
    }
    activeScreen = newScreen;
    newScreen->SetActive(true);
    newScreen->setVisible(true);
    newScreen->setFocusPolicy(Qt::StrongFocus);
    //newScreen->setFocus();
    currentScreen = screen;

    moveLogo();
    newScreen->setFocus();
}
CGadgetListBar::CGadgetListBar(CGadgetsDialog *parent)
: QWidget((QWidget*)parent),
m_ListBox(this, 40, 0, FRAME_WIDTH-40, FRAME_HEIGHT),
m_pGadgetsDlg(parent)
{
    setGeometry(QRect(FRAME_START_X, FRAME_START_Y, FRAME_WIDTH, FRAME_HEIGHT));

    // Prepare the animated switch:
    m_timeLine = new QTimeLine(500, this);
    m_timeLine->setCurveShape(QTimeLine::EaseInOutCurve);
    connect(m_timeLine, SIGNAL(frameChanged(int)), SLOT(setBarPosition(int)));
	connect(m_timeLine, SIGNAL(finished()), SLOT(SlideFinished()));

	for(int i=0; i < GADGET_NUMS; i++)
	{
		m_pListBoxItem[i] = new CGadgetListItem(&m_ListBox, GadgetNameTable[i]);
		m_ListBox.AddButton(m_pListBoxItem[i]);
		connect(m_pListBoxItem[i], SIGNAL(ButtonClick(int)), this, SLOT(AddGadget(int)));
	}
}