⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lozinkadlg.cpp

📁 load data from pc to hand held terminal and vice versa
💻 CPP
字号:
// LozinkaDlg.cpp : implementation file
//

#include "stdafx.h"
#include "LozinkaDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CLozinkaDlg dialog


CLozinkaDlg::CLozinkaDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CLozinkaDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CLozinkaDlg)
	m_StaraLozinka = _T("");
	m_NovaLozinka1 = _T("");
	m_NovaLozinka2 = _T("");
	//}}AFX_DATA_INIT

    // Postavi 'default' parametre
    PostaviParametre( KT_IZMENA_LOZINKE, "Lozinka" );

    // Default vrednosti izlaznih paramtera
    bLozinkaUspesnoUneta = false;
}


void CLozinkaDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CLozinkaDlg)
	DDX_Text(pDX, IDC_STARA_LOZINKA, m_StaraLozinka);
	DDV_MaxChars(pDX, m_StaraLozinka, 20);
	DDX_Text(pDX, IDC_NOVA_LOZINKA1, m_NovaLozinka1);
	DDV_MaxChars(pDX, m_NovaLozinka1, 20);
	DDX_Text(pDX, IDC_NOVA_LOZINKA2, m_NovaLozinka2);
	DDV_MaxChars(pDX, m_NovaLozinka2, 20);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CLozinkaDlg, CDialog)
	//{{AFX_MSG_MAP(CLozinkaDlg)
	ON_BN_CLICKED(IDOK, OnSnimiNaTerminal)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CLozinkaDlg message handlers

// Funkcija za setovanje parametara dijaloga
void CLozinkaDlg::PostaviParametre( EIDKomande ID, CString naslov ){
    IDkomande       = ID;
    NaslovDijaloga  = naslov;
}

// Vraca true ako je unos lozinke bio uspesan
bool CLozinkaDlg::LozinkaUspesnoUneta( void ){
    return bLozinkaUspesnoUneta;
}

void CLozinkaDlg::OnCancel() 
{
	CDialog::OnCancel();
}

void CLozinkaDlg::OnSnimiNaTerminal() 
{
    // Preuzmi podatke iz forme u odgovarajuce promenljive
    this->UpdateData();

	// Proveri da li su lozinke ispravno unete
    string cPoruka;
    if ( !ProveriLozinke( string(m_StaraLozinka), 
                          string(m_NovaLozinka1), string(m_NovaLozinka2),
                          cPoruka ) ){
        AfxMessageBox( cPoruka.data() );
        GotoDlgCtrl( GetDlgItem( IDC_NOVA_LOZINKA1 ) );
        return;
    }

    CRucniTerminalApp* pRTApp = ( CRucniTerminalApp* ) AfxGetApp();

    pRTApp->PrikaziPorukuIKursorZaCekanje( IDS_SNIMANJE_PODATAKA, this );

    bLozinkaUspesnoUneta = false;
    if ( KSpisakKomandi::Instance()->PostojiKomanda( IDkomande ) ) {
        // Snimi lozinku na terminal i prikazi poruku o ishodu.
        bLozinkaUspesnoUneta = SnimiLozinku( string(m_StaraLozinka), string(m_NovaLozinka1), 
                                             KVazeciID::Instance()->DajAppID(), EIDKomande( IDkomande ) );
    }

    pRTApp->UkloniPorukuIKursorZaCekanje();

    if ( bLozinkaUspesnoUneta )
        pRTApp->MyMessageBox( IDS_SNIMANJE_USPELO );
    else
        pRTApp->MyMessageBox( IDS_SNIMANJE_NEUSPELO );
}

// Funkcija proverava ispravnost unetih lozinki
bool CLozinkaDlg::ProveriLozinke( string cStaraLozinka, string cNovaLozinka1, string cNovaLozinka2,
                                  string& cPoruka )
{
    unsigned int nDuzinaLozinkeMin = DUZINA_LOZINKE_MIN;

    // Proveri da li je lozinka kraca od najmanje dozvoljene duzine
    if ( cNovaLozinka1.length() < nDuzinaLozinkeMin ){
        char buffer[100];
        cPoruka = "Lozinka mora da ima bar ";
        cPoruka += itoa( nDuzinaLozinkeMin, buffer, 10 );
        if ( nDuzinaLozinkeMin < 5 )
            cPoruka += " znaka !";
        else
            cPoruka += " znakova !";
        return false;
    }

	// Proveri da li je unet neki znak van dozvoljenog skupa znakova
    // ( slova engleske abecede i cifre )
    bool bOK = false;
    if ( bOK = KInterpret::Instance()->ProveriSkupZnakovaLozinke( cStaraLozinka ) )
        if ( bOK = KInterpret::Instance()->ProveriSkupZnakovaLozinke( cNovaLozinka1 ) )
            bOK = KInterpret::Instance()->ProveriSkupZnakovaLozinke( cNovaLozinka2 );
    if ( ! bOK ) {
        cPoruka = "Dozvoljena su samo slova engleske abecede i cifre !";
        return false;
    }

    // Proveri da li je nova lozinka ispravno uneta drugi put
    if ( cNovaLozinka1.compare( cNovaLozinka2 ) != 0 ) {
        cPoruka = "Nova lozinka nije ista u oba polja !";
        return false;
    }

    // Proveri da li se nova lozinka razlikuje od stare
    if ( cNovaLozinka1.compare( cStaraLozinka ) == 0 ) {
        cPoruka = "Nova lozinka mora da se razlikuje od stare !";
        return false;
    }

    return true;
}

// Pokusa da snimi lozinku na terminal i prikaze poruku da li je operacija uspela ili ne.
bool CLozinkaDlg::SnimiLozinku( string cStaraLozinka, string cNovaLozinka, KString cAppID, 
                                EIDKomande ID ){
    bool bUspelo = false;

    // Najpre pripremi podatke za slanje :
    //  - lozinke
    string cLozinke = KInterpret::Instance()->PripremiLozinkuZaSlanje( cStaraLozinka );
    cLozinke += KInterpret::Instance()->PripremiLozinkuZaSlanje( cNovaLozinka );
    //  - ID
    cAppID.rpad( 0, BROJ_BAJTOVA_ZA_PCAPP_ID );

    KAdminInfo admInf;
    KKomunikator::Instance()->DajAdminInfoTerminala( admInf, false );
    bool PodrzanPCAppID = KKomunikator::Instance()->
                                PodrzanPCAppID( admInf.nVerzija, admInf.nPodverzija );

    // Snimi na terminal
    bUspelo = KKomunikator::Instance()->SnimiLozinkuNaTerminal( ID, cLozinke, 
                                                                PodrzanPCAppID, cAppID.cString );

    return bUspelo;
}

BOOL CLozinkaDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
    SetWindowText( NaslovDijaloga );
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -