Exemple #1
0
AppBase::AppBase(AppListInterface * pList, QWidget *parent) : QWidget(parent)
{
    setWindowFlags(Qt::FramelessWindowHint);//去掉标题栏
    setGeometry(0,0,ui_app_width,ui_app_height);
    setBkgImage(":/images/mainbkg.png");
    m_pList = pList;
}
void CLeftView::selectItem(const int index) {

    currentSelectedItem = index;
    if (previousSelectedItem == currentSelectedItem) {
        return;
    }

    CConfigFrame *pConfigFrame=(CConfigFrame*) ((CMainSyncFrame*)AfxGetMainWnd())->pConfigFrame;


    if (currentSelectedItem == 0) {
        if ( (previousSelectedItem != -1) &&
                ((CSyncSettings*)pConfigFrame->wndSplitter.GetPane(0,1))->saveSettings(false) ) {
            // stay to sync settings pane
            setBkgImage(1);
            lstConfig.SetSelectionMark(1);
        }
        else {
            // show account settings window
            pConfigFrame->wndSplitter.ReplaceView(0,1,RUNTIME_CLASS(CAccountSettings),CSize(100,100));
            setBkgImage(0);
        }
    }
    else if (currentSelectedItem == 1) {
        if ( (previousSelectedItem != -1) &&
                ((CAccountSettings*)pConfigFrame->wndSplitter.GetPane(0,1))->saveSettings(false) ) {
            // stay to account pane
            setBkgImage(0);
            lstConfig.SetSelectionMark(0);
        }
        else {
            // show settings pane
            pConfigFrame->wndSplitter.ReplaceView(0,1,RUNTIME_CLASS(CSyncSettings),CSize(100,100));
            setBkgImage(1);
        }
    }
}
void CLeftView::populateList() {
    CString s1;
    imgList.Create(32, 32, ILC_COLOR32, 0, 0);

    HICON ic1, ic2;
    ic1 = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ACCOUNT));
    ic2 = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_SYNC));
    imgList.Add(ic1);
    imgList.Add(ic2);

    lstConfig.SetIconSpacing(64,36);

    // resize the list so it would have the same width as the window holding it
    if( ((CMainSyncFrame*)AfxGetMainWnd())->getDpiX() != 96) {
        // if it's normal 96dpi we leave as it is
        CRect rectLst,rectWnd;
        lstConfig.GetClientRect(rectLst);
        GetClientRect(rectWnd);

        lstConfig.SetWindowPos(&CWnd::wndTop, rectLst.TopLeft().x, rectLst.TopLeft().y,
                               rectWnd.Width(), rectLst.Height(), SWP_SHOWWINDOW);
    }

    lstConfig.SetItemCount(2);
    lstConfig.SetImageList(&imgList, LVSIL_NORMAL);

    // uncomment this for OnGetDispInfo event
    lstConfig.SetCallbackMask(lstConfig.GetCallbackMask() | LVIS_SELECTED);

    s1.LoadString(IDS_ACCOUNT);
    lstConfig.InsertItem(0,s1, 0);
    s1.LoadString(IDS_SYNC);
    lstConfig.InsertItem(1,s1, 1);
    lstConfig.SetItemState(0, LVIS_SELECTED, LVIS_SELECTED);

    // Correct position of first item.
    POINT pt;
    pt.x = 15;
    pt.y = 10;
    lstConfig.SetItemPosition(0, pt);

    // Set bkground image on first item.
    setBkgImage(0);
}
void CLeftView::OnLvnItemchangedLeftList(NMHDR *pNMHDR, LRESULT *pResult) {

    LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
    CConfigFrame *pConfigFrame=(CConfigFrame*) ((CMainSyncFrame*)AfxGetMainWnd())->pConfigFrame;

    //
    // First time
    //
    if (currentSelectedItem == -1) {
        currentSelectedItem = pNMLV->iItem;
        if (currentSelectedItem == 0) {
            pConfigFrame->wndSplitter.ReplaceView(0,1,RUNTIME_CLASS(CAccountSettings),CSize(100,100));
            setBkgImage(0);
        }
        else if (currentSelectedItem == 1) {
            pConfigFrame->wndSplitter.ReplaceView(0,1,RUNTIME_CLASS(CAccountSettings),CSize(100,100));
            setBkgImage(0);
        }
        return;
    }


    previousSelectedItem = currentSelectedItem;
    if(pNMLV->uNewState != 0) {
        currentSelectedItem = pNMLV->iItem;
    }
    else {
        // Not an event for a new state -> exit.
        return;
    }

    if (previousSelectedItem == currentSelectedItem) {
        // State not changed: nothing to do -> exit.
        return;
    }


    if (currentSelectedItem == 0) {
        if(! ((CSyncSettings*)pConfigFrame->wndSplitter.GetPane(0,1))->saveSettings(false)) {
            // stay to sync settings pane
            currentSelectedItem = 1;
        }
        else {
            // show account settings window
            pConfigFrame->wndSplitter.ReplaceView(0,1,RUNTIME_CLASS(CAccountSettings),CSize(100,100));
            setBkgImage(0);
        }
    }
    else if (currentSelectedItem == 1) {
        if(! ((CAccountSettings*)pConfigFrame->wndSplitter.GetPane(0,1))->saveSettings(false)) {
            // stay to account pane
            currentSelectedItem = 0;
        }
        else {
            // show settings pane
            pConfigFrame->wndSplitter.ReplaceView(0,1,RUNTIME_CLASS(CSyncSettings),CSize(100,100));
            setBkgImage(1);
        }
    }
    *pResult = 0;
}