Академический Документы
Профессиональный Документы
Культура Документы
Disciplina :
Programarea aplicațiilor mobile
Chişinău – 2017
Scopul lucrării de laborator
De realizat aplicație tip Organiser pe platforma aleasă.
La formarea și proiectarea aplicațiilor sunt introduse puncte stricte,
ce sunt obligatorii de respectat. La discreția personală rămâne designul aplicației
și API-ul/Framework-ul în care va fi dezvoltată lucrarea de laborator #2. Componentele și
structura fiecărei Activități va fi descrisă mai jos.
UI Components
Aplicația va conține minim 3 Activități de baza care vor fi numerotate în lucrare sub forma:
1. MainActivity (structura/componente)
2. AddtActivity
Data/Time controller
Info TextBox
Buttons
și altele (la discreție conform specificului aplicației)
Datele operaționale din interiorul aplicației vor fi stocate în fișier/e XML forma cărora rămâne la
discreția
personală. (cuvinte cheie, XML Serialization).
Logical/Operational Component
Figura 1. MainActivity
Figura 2 reprezinta interfata de selectare a unei intrari iar in dependenta de originea
intentiei aceasta fie va fi afisata cu mai multe detalii, fie va fi stearsa sau va fi transmisa spre
editare.
Figura 2. DeliveryListActivity
Figura 4 reprezinta interfata activitatii de adaugare a unei noi intrari. Aceasta cuprinde
posibilitatea de selectare a unei ore dar si campurile obligatorii: from-pozitia curenta, to- pozitia
finala a cursei, load-tipul incarcaturii si price – pretul serviciului.
Figura 4. AddtActivity
Concluzii
În această lucrare de laborator s-a creat un organizator ce vizeaza soferii de cursa lunga.
Acesta contine functinalul de adaugare, stergere, editare si vizualizare a datelor si serviciilor ce
trebuie efectuate. S-au folosit viziuni precum: CalendarView, Button, TextView, EditText,
TimePicker.
Anexa A
Fisierul „Files.cs”:
Fisierul “Helpers.cs”:
public enum NotificationType { None, Day, Hour, HalfHour }
Fisierul „AddtActivity”
[Activity(Label = "Add new delivery")]
public class AddtActivity : Activity
{
private int MaxLength = 20;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.Addt);
from.TextChanged += OnTextChanged;
to.TextChanged += OnTextChanged;
load.TextChanged += OnTextChanged;
price.TextChanged += OnTextChanged;
save.Click += delegate
{
if (from.Text.Length != 0 && to.Text.Length != 0 &&
load.Text.Length != 0 && price.Text.Length != 0)
{
var temp = price.Text.All(char.IsNumber) ? Convert.ToInt32(price.Text) : 0;
var delivery = new Delivery
{
StartDelivery = DateTime.Now,
EndDelivery = new DateTime(del.DateTime.Year,
del.DateTime.Month, del.DateTime.Day,
endDelivery.Hour, endDelivery.Minute, 0),
Price = temp,
Load = load.Text,
StartPosition = from.Text,
EndPosition = to.Text
};
Files.Save(delivery);
StartActivity(new Intent(this, typeof(MainActivity)));
}
if(from.Text.Length == 0)
from.SetError("Insert the place's name where you start from!", null);
else if(to.Text.Length == 0)
to.SetError("Insert the place's name to which you deliver the load!", null);
else if(load.Text.Length == 0)
load.SetError("Insert the type of load you deliver!", null);
else if(price.Text.Length == 0)
price.SetError("Insert the price of load you deliver!", null);
};
}
Fisierul „ViewActivity.cs”:
[Activity(Label = "Delivery")]
public class ViewActivity : Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.View);
var delivery = JsonConvert.DeserializeObject<Delivery>(Intent.GetStringExtra("ToView"));
from.Text = delivery.StartPosition;
to.Text = delivery.EndPosition;
load.Text = delivery.Load;
price.Text = delivery.Price + "$";
var diff = (delivery.EndDelivery - DateTime.Now);
remaining.Text = diff.Days + " days " + diff.Hours + "h " + diff.Minutes + "min";
}
}
Fisierul „DeliveryListActivity.cs”
[Activity(Label = "Select delivery")]
public class DeliveryListActivity : Activity
{
private ArrayAdapter<string> _adapter;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.DeliveryList);
if (list != null)
{
foreach (var l in list)
{
items.Add(l.EndDelivery.ToString(CultureInfo.CurrentCulture));
}
}
switch (param.Scope)
{
case Scope.ToEdit:
Intent intent = new Intent(this, typeof(UpdateActivity));
intent.PutExtra("ToUpdate", JsonConvert.SerializeObject(delivery));
StartActivity(intent);
break;
case Scope.ToSearch:
case Scope.ToView:
intent = new Intent(this, typeof(ViewActivity));
intent.PutExtra("ToView", JsonConvert.SerializeObject(delivery));
StartActivity(intent);
break;
case Scope.ToRemove:
Files.Remove(delivery);
StartActivity(new Intent(this, typeof(MainActivity)));
break;
}
}
};
}
}
Fisierul „MainActivity.cs”:
[Activity(Label = "Trucker Organizer", MainLauncher = true)]
public class MainActivity : Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
//Files.Truncate();
if (new FileInfo(Files.Filename).Length != 0)
{
StartService(new Intent(this, typeof(DeliveryService)));
}
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.Main);
add.Click += delegate
{
Intent intent = new Intent(this, typeof(AddtActivity));
var obj = new Param { DateTime = currentTime };
intent.PutExtra("ToAddt", JsonConvert.SerializeObject(obj));
StartActivity(intent);
};
edit.Click += delegate
{
Intent intent = new Intent(this, typeof(DeliveryListActivity));
var obj = new Param { DateTime = currentTime, Scope = Scope.ToEdit };
intent.PutExtra("ToDeliveryList", JsonConvert.SerializeObject(obj));
StartActivity(intent);
};
view.Click += delegate
{
Intent intent = new Intent(this, typeof(DeliveryListActivity));
var obj = new Param {DateTime = currentTime, Scope = Scope.ToView};
intent.PutExtra("ToDeliveryList", JsonConvert.SerializeObject(obj));
StartActivity(intent);
};
remove.Click += delegate
{
Intent intent = new Intent(this, typeof(DeliveryListActivity));
var obj = new Param { DateTime = currentTime, Scope = Scope.ToRemove };
intent.PutExtra("ToDeliveryList", JsonConvert.SerializeObject(obj));
StartActivity(intent);
};
search.Click += delegate
{
if (keyword.Text.Length > 0)
{
Intent intent = new Intent(this, typeof(DeliveryListActivity));
var obj = new Param { Keyword = keyword.Text, Scope = Scope.ToSearch
};
intent.PutExtra("ToDeliveryList", JsonConvert.SerializeObject(obj));
StartActivity(intent);
}
//keyword.SetError("This field can not be empty", null);
};
}
}