<commit_before>var controls=require('controls');

// get main and menu view as objects
var menuView=controls.getMenuView();
var mainView=controls.getMainView();

var viewIds = [];  // vettore degli ID delle view switchabili
var switches = {}; // stati delle view switchabili.

// ritorna lo ID della view attualmente visualizzata
var getOn = function(){
    for (var p in switches)
        if (switches[p]) return p;
    return undefined;
};

// constrolla che lo ID sia uno di quelli delle view che si usano
var checkId = function(id){
    var ok = false;
    for (var i in viewIds){
        ok = ok || (viewIds[i] == id);
    }
    return ok;
};

// inizializza il sistema di switch inserendo gli ID delle view switchabili
// nell'apposito vettore e crea l'insieme delle variabili booleane per tracciare
// gli stati delle views.
var initSwitcher = function(IDs){
    var views = controls.getMainView().mainView.getChildren();
    var nViews = views.length;

    for (var i in IDs)
        viewIds[i] = IDs[i];

    for (var j in viewIds){
        var isThere = false;
        for (var i= 0; i<nViews; i++){
            isThere = isThere || viewIds[j] == views[i];
        }
        switches[viewIds[j]] = isThere;
    }
};

// carica nella mainView una nuova view con identificatore id.
var switchTo = function(id){
    Ti.API.info("Switching...");
    var currentViewId;

    if (!checkId(id))
        throw id + " non è un ID valido per il modulo switcher.";

    currentViewId = getOn();

    Ti.API.info("    currentViewId: " + currentViewId);
    Ti.API.info("    nextViewId   : " + id);
    if (currentViewId != id){
        if (currentViewId){
            var childViews = mainView.mainView.getChildren();
            var currentView;

            for( var i in childViews){
                if (childViews[i].id == currentViewId)
                    currentView = childViews[i];
            }

            switches[currentViewId] = false;
            Ti.API.info("    switches." + currentViewId + " = " + switches[currentViewId]);
            mainView.mainView.remove(currentView);
            Ti.API.info("    controls.getMainView().mainView.remove(" + currentView + ")");
        }
        var nextView = (Alloy.createController(id))[id];

        switches[id] = true;
        Ti.API.info("    switches." + id + " = " + switches[id]);
        mainView.mainView.add(nextView);
        Ti.API.info("    controls.getMainView().mainView.add(" + nextView + ")");
    }

};

/**
 * Aggiorna la configurazine dell'utene di Georep
 * usando le info locali permanenti.
 */
function updateGeorepUser(){
    var georepUser = Alloy.Globals.Georep.getUser();
    try{
        georepUser.update({
            name: georepUser.getName(),
            password: <PASSWORD>(),
            nick: Ti.App.Properties.getObject(Alloy.Globals.Constants.LOCAL_USER_DATA).nick,
            mail: Ti.App.Properties.getObject(Alloy.Globals.Constants.LOCAL_USER_DATA).mail
        });
    }catch (e){
        Ti.API.debug("Errore aggiornamento utente georep\n" + JSON.stringify(e));

    }
    Ti.API.info("updateGeorepUser(): Utente Georep aggiornato dai dati locali");
    Ti.API.debug("  Georep.getUser(): " + JSON.stringify(Alloy.Globals.Georep.getUser()));
}

// inizializzo il sistema di switching con i seguenti ID delle view da inter-switchare.
initSwitcher(['map','last','my']);

// add event listener in this context
menuView.menuTable.addEventListener('click',function(e){
	$.drawermenu.showhidemenu();
    var rowId = e.rowData.id;
    Ti.API.debug("Drawer: cliccato su \'" + rowId + "\'");

    if(rowId == 'row1'){
        switchTo('map');
    }else if(rowId == 'row2'){
        switchTo('last');
    }else if(rowId == 'row3'){
        switchTo('my');
    }else if(rowId == 'row4'){
        Alloy.createController('newUser').newUser.open();
    }
});

// add menu view to container exposed by widget<commit_msg>Aggiunta colorazione al drawer per indicare la view attualmente selezionata.<commit_after>var controls=require('controls');

// get main and menu view as objects
var menuView=controls.getMenuView();
var mainView=controls.getMainView();

var viewIds  = []; // vettore degli ID delle view switchabili
var switches = {}; // stati delle view switchabili.
var buttons  = {}; // riferimenti ai bottoni nel menù per le view switchabili

// ritorna lo ID della view attualmente visualizzata
var getOn = function(){
    for (var p in switches)
        if (switches[p]) return p;
    return undefined;
};

// constrolla che lo ID sia uno di quelli delle view che si usano
var checkId = function(id){
    var ok = false;
    for (var i in viewIds){
        ok = ok || (viewIds[i] == id);
    }
    return ok;
};

// inizializza il sistema di switch inserendo gli ID delle view switchabili
// nell'apposito vettore e crea l'insieme delle variabili booleane per tracciare
// gli stati delle views.
// Inizializza anche il vettore con i riferimeti hai bottoni.
var initSwitcher = function(IDs, rowIDs){
    var views = controls.getMainView().mainView.getChildren(); // vettore di view in mainview
    var rows = menuView.menuView.getChildren()[2].getSections()[0].getRows(); // vettore delle righe del drawer
    var nViews = views.length;

    // inizializzo il vettore degli ID delle view
    for (var i in IDs)
        viewIds[i] = IDs[i];

    // inizializzo lo stato di ogni view segnano con TRUE la
    // view che è attualmente caricata nel drawer.
    for (var j in viewIds){
        var isThere = false;
        for (var i= 0; i<nViews; i++){
            isThere = isThere || viewIds[j] == views[i];
        }
        switches[viewIds[j]] = isThere;
    }

    // associo ogni ID di view con il riferimento al suo bottone nel menù del drawer
    // i riferimenti sono messi nell'oggetto 'buttons'.
    for (var k in viewIds){
        for (var r in rows){
            if (rows[r].id == rowIDs[k])
                buttons[viewIds[k]] = rows[r];
        }
    }
};

// carica nella mainView una nuova view con identificatore id.
var switchTo = function(id){
    Ti.API.info("Switching...");
    var currentViewId;

    if (!checkId(id))
        throw id + " non è un ID valido per il modulo switcher.";

    // l'ID della view attualmente visualizzata
    currentViewId = getOn();

    Ti.API.info("    currentViewId: " + currentViewId);
    Ti.API.info("    nextViewId   : " + id);
    if (currentViewId != id){
    // la view visualizzata è diversa da quella che si vuole aprire
        if (currentViewId){
        // effettivamente c'era una view già aperta, quindi bisogna rimuoverla e il
        // suo bottone va "scolorito".
            var childViews = mainView.mainView.getChildren();
            var currentView;

            for( var i in childViews){
                if (childViews[i].id == currentViewId)
                    currentView = childViews[i];
            }

            switches[currentViewId] = false;
            Ti.API.info("    switches." + currentViewId + " = " + switches[currentViewId]);

            // scolorisco il bottone della view che prima era visualizzata.
            buttons[currentViewId].setBackgroundColor("trasparent");

            // rimuovo la view per fare posto a quella nuova.
            mainView.mainView.remove(currentView);
            Ti.API.info("    controls.getMainView().mainView.remove(" + currentView + ")");
        }

        // che sia presente una view nel drawer o meno, a questo punto il drawer è
        // vuoto e quindi bisogna caricare la view selezioneta dall'utente.

        var nextView = (Alloy.createController(id))[id];

        switches[id] = true;
        Ti.API.info("    switches." + id + " = " + switches[id]);

        // coloro il bottone della view selezionata.
        buttons[id].setBackgroundColor("#33B5E5");

        // carco la view selezionata nel drawer.
        mainView.mainView.add(nextView);
        Ti.API.info("    controls.getMainView().mainView.add(" + nextView + ")");
    }
};

/**
 * Aggiorna la configurazine dell'utene di Georep
 * usando le info locali permanenti.
 */
function updateGeorepUser(){
    var georepUser = Alloy.Globals.Georep.getUser();
    try{
        georepUser.update({
            name: georepUser.getName(),
            password: <PASSWORD>(),
            nick: Ti.App.Properties.getObject(Alloy.Globals.Constants.LOCAL_USER_DATA).nick,
            mail: Ti.App.Properties.getObject(Alloy.Globals.Constants.LOCAL_USER_DATA).mail
        });
    }catch (e){
        Ti.API.debug("Errore aggiornamento utente georep\n" + JSON.stringify(e));

    }
    Ti.API.info("updateGeorepUser(): Utente Georep aggiornato dai dati locali");
    Ti.API.debug("  Georep.getUser(): " + JSON.stringify(Alloy.Globals.Georep.getUser()));
}

// inizializzo il sistema di switching con i seguenti ID delle view da inter-switchare.
initSwitcher(['map','last','my'],['row1','row2','row3']);

// add event listener in this context
menuView.menuTable.addEventListener('click',function(e){
	$.drawermenu.showhidemenu();
    var rowId = e.rowData.id;
    Ti.API.debug("Drawer: cliccato su \'" + rowId + "\'");

    if(rowId == 'row1'){
        switchTo('map');
    }else if(rowId == 'row2'){
        switchTo('last');
    }else if(rowId == 'row3'){
        switchTo('my');
    }else if(rowId == 'row4'){
        Alloy.createController('newUser').newUser.open();
    }
});

// add menu view to container exposed by widget
{'fraction_non_alphanumeric': 0.129285638467254, 'fraction_numerical': 0.0020167710434136504, 'mean_word_length': 2.633629001156961, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3480633', 'n_tokens_mistral': 3019, 'n_tokens_neox': 2995, 'n_words': 815}