1
0
mirror of https://github.com/XFox111/GUTSchedule.git synced 2026-04-22 06:58:01 +03:00

[1.0.8] Added authorization for students

Duplicate schedule entries are merged
Scheule double check for PhD students
This commit is contained in:
Michael Gordeev
2020-01-30 20:07:09 +03:00
parent 6ca4217747
commit af532fc788
11 changed files with 291 additions and 276 deletions
@@ -31,13 +31,21 @@ namespace GUT.Schedule
{
try
{
if(Data.DataSet.HttpClient != null)
{
if(Data.DataSet.IsProfessor == true)
status.Text = "Загрузка расписания с картофельных серверов Бонча";
List<ProfessorSubject> schedule = new List<ProfessorSubject>();
else
status.Text = "Загрузка расписания";
if (Data.DataSet.HttpClient != null)
{
List<CabinetSubject> schedule = new List<CabinetSubject>();
for (DateTime d = Data.StartDate; int.Parse($"{d.Year}{d.Month:00}") <= int.Parse($"{Data.EndDate.Year}{Data.EndDate.Month:00}"); d = d.AddMonths(1))
schedule.AddRange(await Parser.GetProfessorSchedule(Data.DataSet.HttpClient, d));
schedule.AddRange(await Parser.GetCabinetSchedule(Data.DataSet.HttpClient, d, false)); // Even though the user can be professor he can be also PhD student (and have his student schedule)
if(Data.DataSet.IsProfessor == true)
for (DateTime d = Data.StartDate; int.Parse($"{d.Year}{d.Month:00}") <= int.Parse($"{Data.EndDate.Year}{Data.EndDate.Month:00}"); d = d.AddMonths(1))
schedule.AddRange(await Parser.GetCabinetSchedule(Data.DataSet.HttpClient, d, true));
schedule = schedule.FindAll(i => i.StartTime.Date >= Data.StartDate && i.StartTime.Date <= Data.EndDate); // Filtering schedule according to export range
@@ -46,7 +54,6 @@ namespace GUT.Schedule
}
else
{
status.Text = "Загрузка расписания";
List<Subject> schedule = await Parser.LoadSchedule();
schedule = schedule.FindAll(i => i.StartTime.Date >= Data.StartDate && i.StartTime.Date <= Data.EndDate); // Filtering schedule according to export range
@@ -22,8 +22,8 @@ namespace GUT.Schedule
{
Button start, end, export;
Button forDay, forWeek, forMonth, forSemester;
Spinner faculty, course, group, reminder, calendar, user;
CheckBox groupTitle;
Spinner faculty, course, group, reminder, calendar;
CheckBox groupTitle, authorize;
TextView error;
LinearLayout studentParams, profParams;
EditText email, password;
@@ -50,13 +50,6 @@ namespace GUT.Schedule
AddEvents();
// Settings spinners' dropdown lists content
user.SetList(this, new[]
{
"Студент",
"Преподаватель"
});
user.SetSelection(prefs.GetInt("User", 0));
reminder.SetList(this, new[]
{
"Нет",
@@ -74,6 +67,7 @@ namespace GUT.Schedule
start.Text = Data.StartDate.ToShortDateString();
groupTitle.Checked = prefs.GetBoolean("AddGroupToHeader", false);
authorize.Checked = prefs.GetBoolean("Authorize", true);
email.Text = prefs.GetString("email", "");
password.Text = prefs.GetString("password", "");
@@ -91,7 +85,8 @@ namespace GUT.Schedule
}
HttpClient client = null;
if(user.SelectedItemPosition == 1)
bool? isProf = null;
if(authorize.Checked)
{
Toast.MakeText(ApplicationContext, "Авторизация...", ToastLength.Short).Show();
if (string.IsNullOrWhiteSpace(email.Text) || string.IsNullOrWhiteSpace(password.Text))
@@ -133,12 +128,11 @@ namespace GUT.Schedule
HttpResponseMessage verificationResponse = await client.GetAsync("https://cabs.itut.ru/cabinet/?login=yes");
export.Enabled = true;
IHtmlDocument doc = new HtmlParser().ParseDocument(await verificationResponse.GetString());
if (!doc.QuerySelectorAll("nobr").Any(i => i.TextContent.Contains("Ведомости")))
{
error.Text = "Ошибка авторизации: Необходимо авторизоваться с аккаунтом преподавателя";
error.Visibility = ViewStates.Visible;
return;
}
if (doc.QuerySelectorAll("nobr").Any(i => i.TextContent.Contains("Ведомости")))
isProf = true;
else
isProf = false;
Data.Groups = null;
// Если ты это читаешь и у тебя возникли вопросы по типу "А какого хуя творится в коде ниже?!", то во-первых:
@@ -170,7 +164,8 @@ namespace GUT.Schedule
AddGroupToTitle = groupTitle.Checked,
Calendar = Calendar.Calendars[calendar.SelectedItemPosition].Id,
Reminder = (reminder.SelectedItemPosition - 1) * 5,
HttpClient = client
HttpClient = client,
IsProfessor = isProf
};
StartActivity(new Intent(this, typeof(ExportActivity)));
@@ -223,10 +218,11 @@ namespace GUT.Schedule
group = FindViewById<Spinner>(Resource.Id.group);
reminder = FindViewById<Spinner>(Resource.Id.reminder);
calendar = FindViewById<Spinner>(Resource.Id.calendar);
user = FindViewById<Spinner>(Resource.Id.user);
error = FindViewById<TextView>(Resource.Id.error);
groupTitle = FindViewById<CheckBox>(Resource.Id.groupTitle);
authorize = FindViewById<CheckBox>(Resource.Id.authorization);
studentParams = FindViewById<LinearLayout>(Resource.Id.studentParams);
profParams = FindViewById<LinearLayout>(Resource.Id.professorParams);
@@ -247,21 +243,20 @@ namespace GUT.Schedule
prefs.Edit().PutInt("Course", e.Position).Apply();
UpdateGroupsList();
};
user.ItemSelected += (s, e) =>
authorize.CheckedChange += (s, e) =>
{
prefs.Edit().PutInt("User", e.Position).Apply();
switch (e.Position)
prefs.Edit().PutBoolean("Authorize", e.IsChecked).Apply();
if (e.IsChecked)
{
case 0:
studentParams.Visibility = ViewStates.Visible;
groupTitle.Visibility = ViewStates.Visible;
profParams.Visibility = ViewStates.Gone;
break;
case 1:
studentParams.Visibility = ViewStates.Gone;
groupTitle.Visibility = ViewStates.Gone;
profParams.Visibility = ViewStates.Visible;
break;
studentParams.Visibility = ViewStates.Gone;
groupTitle.Visibility = ViewStates.Gone;
profParams.Visibility = ViewStates.Visible;
}
else
{
studentParams.Visibility = ViewStates.Visible;
groupTitle.Visibility = ViewStates.Visible;
profParams.Visibility = ViewStates.Gone;
}
};
calendar.ItemSelected += (s, e) =>
+3 -3
View File
@@ -85,11 +85,11 @@ namespace GUT.Schedule
}
}
public static void Export(IEnumerable<ProfessorSubject> schedule)
public static void Export(IEnumerable<CabinetSubject> schedule)
{
DataSet data = Data.DataSet;
foreach (ProfessorSubject item in schedule)
foreach (CabinetSubject item in schedule)
{
ContentValues eventValues = new ContentValues();
@@ -100,7 +100,7 @@ namespace GUT.Schedule
item.Name,
item.Type));
eventValues.Put(CalendarContract.Events.InterfaceConsts.Description, item.Groups);
eventValues.Put(CalendarContract.Events.InterfaceConsts.Description, item.Opponent);
eventValues.Put(CalendarContract.Events.InterfaceConsts.EventLocation, item.Cabinet);
eventValues.Put(CalendarContract.Events.InterfaceConsts.Availability, 0);
@@ -75,7 +75,7 @@
<Compile Include="Extensions.cs" />
<Compile Include="Activities\MainActivity.cs" />
<Compile Include="Models\DataSet.cs" />
<Compile Include="Models\ProfessorSubject.cs" />
<Compile Include="Models\CabinetSubject.cs" />
<Compile Include="Parser.cs" />
<Compile Include="Resources\Resource.designer.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
@@ -2,7 +2,7 @@
namespace GUT.Schedule.Models
{
public class ProfessorSubject
public class CabinetSubject
{
public string Name { get; set; }
public string Type { get; set; }
@@ -10,14 +10,14 @@ namespace GUT.Schedule.Models
public string Order { get; set; }
public DateTime StartTime { get; set; }
public DateTime EndTime { get; set; }
public string Groups { get; set; }
public string Opponent { get; set; }
public ProfessorSubject(string name, string type, string cabinet, string groups, int year, int month, int day, string schedule)
public CabinetSubject(string name, string type, string cabinet, string opponent, int year, int month, int day, string schedule)
{
Name = name;
Type = type;
Cabinet = cabinet;
Groups = groups;
Opponent = opponent;
string[] time = schedule.Split('-');
@@ -11,5 +11,6 @@ namespace GUT.Schedule.Models
public int Reminder { get; set; }
public bool AddGroupToTitle { get; set; }
public HttpClient HttpClient { get; set; }
public bool? IsProfessor { get; set; }
}
}
+20 -8
View File
@@ -122,11 +122,11 @@ namespace GUT.Schedule
return $"205.{now.Year - 2001}{now.Year - 2000}/2";
}
public static async Task<List<ProfessorSubject>> GetProfessorSchedule(HttpClient client, DateTime date)
public static async Task<List<CabinetSubject>> GetCabinetSchedule(HttpClient client, DateTime date, bool checkProfSchedule)
{
using HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://cabs.itut.ru/cabinet/project/cabinet/forms/pr_raspisanie_kalendar.php");
using HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, $"https://cabs.itut.ru/cabinet/project/cabinet/forms/{(checkProfSchedule ? "pr_" : "")}raspisanie_kalendar.php");
request.SetContent(
("month", date.Month.ToString()),
("month", date.Month.ToString("0:00")),
("year", date.Year.ToString()),
("type_z", "0"));
@@ -137,23 +137,35 @@ namespace GUT.Schedule
throw new HttpRequestException(responseContent);
IHtmlDocument doc = new HtmlParser().ParseDocument(responseContent);
List<ProfessorSubject> schedule = new List<ProfessorSubject>();
List<CabinetSubject> schedule = new List<CabinetSubject>();
foreach(var i in doc.QuerySelectorAll("td").Where(i => i.GetAttribute("style") == "text-align: center; vertical-align: top"))
for (int k = 0; k < i.QuerySelectorAll("i").Length; k++)
{
ProfessorSubject item = new ProfessorSubject(
CabinetSubject item = new CabinetSubject(
name: i.QuerySelectorAll("b")[k * 2 + 1].TextContent,
type: i.QuerySelectorAll("i")[k].TextContent,
cabinet: i.ChildNodes[k * 13 + 12].TextContent,
groups: i.ChildNodes[k * 13 + 7].TextContent,
cabinet: i.ChildNodes[k * 13 + 11].TextContent,
opponent: i.ChildNodes[k * 13 + 6].TextContent,
year: date.Year,
month: date.Month,
day: int.Parse(i.QuerySelectorAll("b")[0].TextContent),
day: int.Parse(i.ChildNodes[0].TextContent),
schedule: i.QuerySelectorAll("b")[k * 2 + 2].TextContent
);
schedule.Add(item);
}
// Merge duplicating entries
schedule.OrderByDescending(i => i.StartTime);
for(int k = 1; k < schedule.Count; k++)
if(schedule[k - 1].StartTime == schedule[k].StartTime &&
schedule[k - 1].Name == schedule[k].Name &&
schedule[k - 1].Type == schedule[k].Type)
{
schedule[k - 1].Opponent += "; " + schedule[k].Opponent;
schedule[k - 1].Cabinet += ";\n" + schedule[k].Cabinet;
schedule.RemoveAt(k--);
}
return schedule;
}
}
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="107" android:versionName="1.0.7" package="com.xfox111.gut.schedule" android:installLocation="auto">
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="108" android:versionName="1.0.8" package="com.xfox111.gut.schedule" android:installLocation="auto">
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="28" />
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="ГУТ.Расписание" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme.NoActionBar"></application>
<uses-permission android:name="android.permission.READ_CALENDAR" />
+215 -215
View File
@@ -3299,544 +3299,544 @@ namespace GUT.Schedule
public const int async = 2131230750;
// aapt resource value: 0x7F08001F
public const int auto = 2131230751;
public const int authorization = 2131230751;
// aapt resource value: 0x7F080020
public const int beginning = 2131230752;
public const int auto = 2131230752;
// aapt resource value: 0x7F080021
public const int blocking = 2131230753;
public const int beginning = 2131230753;
// aapt resource value: 0x7F080022
public const int bottom = 2131230754;
public const int blocking = 2131230754;
// aapt resource value: 0x7F080023
public const int browser_actions_header_text = 2131230755;
// aapt resource value: 0x7F080026
public const int browser_actions_menu_items = 2131230758;
public const int bottom = 2131230755;
// aapt resource value: 0x7F080024
public const int browser_actions_menu_item_icon = 2131230756;
// aapt resource value: 0x7F080025
public const int browser_actions_menu_item_text = 2131230757;
public const int browser_actions_header_text = 2131230756;
// aapt resource value: 0x7F080027
public const int browser_actions_menu_view = 2131230759;
public const int browser_actions_menu_items = 2131230759;
// aapt resource value: 0x7F080025
public const int browser_actions_menu_item_icon = 2131230757;
// aapt resource value: 0x7F080026
public const int browser_actions_menu_item_text = 2131230758;
// aapt resource value: 0x7F080028
public const int buttonPanel = 2131230760;
public const int browser_actions_menu_view = 2131230760;
// aapt resource value: 0x7F080029
public const int calendar = 2131230761;
public const int buttonPanel = 2131230761;
// aapt resource value: 0x7F08002A
public const int center = 2131230762;
public const int calendar = 2131230762;
// aapt resource value: 0x7F08002B
public const int center_horizontal = 2131230763;
public const int center = 2131230763;
// aapt resource value: 0x7F08002C
public const int center_vertical = 2131230764;
public const int center_horizontal = 2131230764;
// aapt resource value: 0x7F08002D
public const int checkbox = 2131230765;
public const int center_vertical = 2131230765;
// aapt resource value: 0x7F08002E
public const int chronometer = 2131230766;
public const int checkbox = 2131230766;
// aapt resource value: 0x7F08002F
public const int clear = 2131230767;
public const int chronometer = 2131230767;
// aapt resource value: 0x7F080030
public const int clip_horizontal = 2131230768;
public const int clear = 2131230768;
// aapt resource value: 0x7F080031
public const int clip_vertical = 2131230769;
public const int clip_horizontal = 2131230769;
// aapt resource value: 0x7F080032
public const int collapseActionView = 2131230770;
public const int clip_vertical = 2131230770;
// aapt resource value: 0x7F080033
public const int container = 2131230771;
public const int collapseActionView = 2131230771;
// aapt resource value: 0x7F080034
public const int content = 2131230772;
public const int container = 2131230772;
// aapt resource value: 0x7F080035
public const int contentPanel = 2131230773;
public const int content = 2131230773;
// aapt resource value: 0x7F080036
public const int coordinator = 2131230774;
public const int contentPanel = 2131230774;
// aapt resource value: 0x7F080037
public const int course = 2131230775;
public const int coordinator = 2131230775;
// aapt resource value: 0x7F080038
public const int course = 2131230776;
// aapt resource value: 0x7F080001
public const int CTRL = 2131230721;
// aapt resource value: 0x7F080038
public const int custom = 2131230776;
// aapt resource value: 0x7F080039
public const int customPanel = 2131230777;
public const int custom = 2131230777;
// aapt resource value: 0x7F08003A
public const int decor_content_parent = 2131230778;
public const int customPanel = 2131230778;
// aapt resource value: 0x7F08003B
public const int default_activity_button = 2131230779;
public const int decor_content_parent = 2131230779;
// aapt resource value: 0x7F08003C
public const int design_bottom_sheet = 2131230780;
public const int default_activity_button = 2131230780;
// aapt resource value: 0x7F08003D
public const int design_menu_item_action_area = 2131230781;
public const int design_bottom_sheet = 2131230781;
// aapt resource value: 0x7F08003E
public const int design_menu_item_action_area_stub = 2131230782;
public const int design_menu_item_action_area = 2131230782;
// aapt resource value: 0x7F08003F
public const int design_menu_item_text = 2131230783;
public const int design_menu_item_action_area_stub = 2131230783;
// aapt resource value: 0x7F080040
public const int design_navigation_view = 2131230784;
public const int design_menu_item_text = 2131230784;
// aapt resource value: 0x7F080041
public const int disableHome = 2131230785;
public const int design_navigation_view = 2131230785;
// aapt resource value: 0x7F080042
public const int edit_query = 2131230786;
public const int disableHome = 2131230786;
// aapt resource value: 0x7F080043
public const int email = 2131230787;
public const int edit_query = 2131230787;
// aapt resource value: 0x7F080044
public const int end = 2131230788;
public const int email = 2131230788;
// aapt resource value: 0x7F080045
public const int enterAlways = 2131230789;
public const int end = 2131230789;
// aapt resource value: 0x7F080046
public const int enterAlwaysCollapsed = 2131230790;
public const int enterAlways = 2131230790;
// aapt resource value: 0x7F080047
public const int error = 2131230791;
public const int enterAlwaysCollapsed = 2131230791;
// aapt resource value: 0x7F080048
public const int exitUntilCollapsed = 2131230792;
// aapt resource value: 0x7F08004A
public const int expanded_menu = 2131230794;
public const int error = 2131230792;
// aapt resource value: 0x7F080049
public const int expand_activities_button = 2131230793;
public const int exitUntilCollapsed = 2131230793;
// aapt resource value: 0x7F08004B
public const int export = 2131230795;
public const int expanded_menu = 2131230795;
// aapt resource value: 0x7F08004A
public const int expand_activities_button = 2131230794;
// aapt resource value: 0x7F08004C
public const int faculty = 2131230796;
public const int export = 2131230796;
// aapt resource value: 0x7F08004D
public const int fill = 2131230797;
// aapt resource value: 0x7F080050
public const int filled = 2131230800;
public const int faculty = 2131230797;
// aapt resource value: 0x7F08004E
public const int fill_horizontal = 2131230798;
// aapt resource value: 0x7F08004F
public const int fill_vertical = 2131230799;
public const int fill = 2131230798;
// aapt resource value: 0x7F080051
public const int @fixed = 2131230801;
public const int filled = 2131230801;
// aapt resource value: 0x7F08004F
public const int fill_horizontal = 2131230799;
// aapt resource value: 0x7F080050
public const int fill_vertical = 2131230800;
// aapt resource value: 0x7F080052
public const int forDay = 2131230802;
// aapt resource value: 0x7F080056
public const int forever = 2131230806;
public const int @fixed = 2131230802;
// aapt resource value: 0x7F080053
public const int forMonth = 2131230803;
public const int forDay = 2131230803;
// aapt resource value: 0x7F080057
public const int forever = 2131230807;
// aapt resource value: 0x7F080054
public const int forSemester = 2131230804;
public const int forMonth = 2131230804;
// aapt resource value: 0x7F080055
public const int forWeek = 2131230805;
public const int forSemester = 2131230805;
// aapt resource value: 0x7F080056
public const int forWeek = 2131230806;
// aapt resource value: 0x7F080002
public const int FUNCTION = 2131230722;
// aapt resource value: 0x7F080057
public const int ghost_view = 2131230807;
// aapt resource value: 0x7F080058
public const int group = 2131230808;
public const int ghost_view = 2131230808;
// aapt resource value: 0x7F080059
public const int groupTitle = 2131230809;
public const int group = 2131230809;
// aapt resource value: 0x7F08005A
public const int group_divider = 2131230810;
public const int groupTitle = 2131230810;
// aapt resource value: 0x7F08005B
public const int home = 2131230811;
public const int group_divider = 2131230811;
// aapt resource value: 0x7F08005C
public const int homeAsUp = 2131230812;
public const int home = 2131230812;
// aapt resource value: 0x7F08005D
public const int icon = 2131230813;
public const int homeAsUp = 2131230813;
// aapt resource value: 0x7F08005E
public const int icon_group = 2131230814;
public const int icon = 2131230814;
// aapt resource value: 0x7F08005F
public const int ifRoom = 2131230815;
public const int icon_group = 2131230815;
// aapt resource value: 0x7F080060
public const int image = 2131230816;
public const int ifRoom = 2131230816;
// aapt resource value: 0x7F080061
public const int info = 2131230817;
public const int image = 2131230817;
// aapt resource value: 0x7F080062
public const int italic = 2131230818;
public const int info = 2131230818;
// aapt resource value: 0x7F080063
public const int item_touch_helper_previous_elevation = 2131230819;
public const int italic = 2131230819;
// aapt resource value: 0x7F080064
public const int labeled = 2131230820;
public const int item_touch_helper_previous_elevation = 2131230820;
// aapt resource value: 0x7F080065
public const int largeLabel = 2131230821;
public const int labeled = 2131230821;
// aapt resource value: 0x7F080066
public const int left = 2131230822;
public const int largeLabel = 2131230822;
// aapt resource value: 0x7F080067
public const int line1 = 2131230823;
public const int left = 2131230823;
// aapt resource value: 0x7F080068
public const int line3 = 2131230824;
public const int line1 = 2131230824;
// aapt resource value: 0x7F080069
public const int listMode = 2131230825;
public const int line3 = 2131230825;
// aapt resource value: 0x7F08006A
public const int list_item = 2131230826;
public const int listMode = 2131230826;
// aapt resource value: 0x7F08006B
public const int masked = 2131230827;
public const int list_item = 2131230827;
// aapt resource value: 0x7F08006C
public const int message = 2131230828;
public const int masked = 2131230828;
// aapt resource value: 0x7F08006D
public const int message = 2131230829;
// aapt resource value: 0x7F080003
public const int META = 2131230723;
// aapt resource value: 0x7F08006D
public const int middle = 2131230829;
// aapt resource value: 0x7F08006E
public const int mini = 2131230830;
public const int middle = 2131230830;
// aapt resource value: 0x7F08006F
public const int mtrl_child_content_container = 2131230831;
public const int mini = 2131230831;
// aapt resource value: 0x7F080070
public const int mtrl_internal_children_alpha_tag = 2131230832;
public const int mtrl_child_content_container = 2131230832;
// aapt resource value: 0x7F080071
public const int multiply = 2131230833;
public const int mtrl_internal_children_alpha_tag = 2131230833;
// aapt resource value: 0x7F080072
public const int navigation_header_container = 2131230834;
public const int multiply = 2131230834;
// aapt resource value: 0x7F080073
public const int never = 2131230835;
public const int navigation_header_container = 2131230835;
// aapt resource value: 0x7F080074
public const int none = 2131230836;
public const int never = 2131230836;
// aapt resource value: 0x7F080075
public const int normal = 2131230837;
public const int none = 2131230837;
// aapt resource value: 0x7F080076
public const int notification_background = 2131230838;
public const int normal = 2131230838;
// aapt resource value: 0x7F080077
public const int notification_main_column = 2131230839;
public const int notification_background = 2131230839;
// aapt resource value: 0x7F080078
public const int notification_main_column_container = 2131230840;
public const int notification_main_column = 2131230840;
// aapt resource value: 0x7F080079
public const int outline = 2131230841;
public const int notification_main_column_container = 2131230841;
// aapt resource value: 0x7F08007A
public const int parallax = 2131230842;
public const int outline = 2131230842;
// aapt resource value: 0x7F08007B
public const int parentPanel = 2131230843;
public const int parallax = 2131230843;
// aapt resource value: 0x7F08007C
public const int parent_matrix = 2131230844;
public const int parentPanel = 2131230844;
// aapt resource value: 0x7F08007D
public const int password = 2131230845;
public const int parent_matrix = 2131230845;
// aapt resource value: 0x7F08007E
public const int pin = 2131230846;
public const int password = 2131230846;
// aapt resource value: 0x7F08007F
public const int professorParams = 2131230847;
public const int pin = 2131230847;
// aapt resource value: 0x7F080080
public const int progress_circular = 2131230848;
public const int professorParams = 2131230848;
// aapt resource value: 0x7F080081
public const int progress_horizontal = 2131230849;
public const int progress_circular = 2131230849;
// aapt resource value: 0x7F080082
public const int radio = 2131230850;
public const int progress_horizontal = 2131230850;
// aapt resource value: 0x7F080083
public const int reminder = 2131230851;
public const int radio = 2131230851;
// aapt resource value: 0x7F080084
public const int right = 2131230852;
public const int reminder = 2131230852;
// aapt resource value: 0x7F080085
public const int right_icon = 2131230853;
public const int right = 2131230853;
// aapt resource value: 0x7F080086
public const int right_side = 2131230854;
public const int right_icon = 2131230854;
// aapt resource value: 0x7F080087
public const int save_image_matrix = 2131230855;
public const int right_side = 2131230855;
// aapt resource value: 0x7F080088
public const int save_non_transition_alpha = 2131230856;
public const int save_image_matrix = 2131230856;
// aapt resource value: 0x7F080089
public const int save_scale_type = 2131230857;
public const int save_non_transition_alpha = 2131230857;
// aapt resource value: 0x7F08008A
public const int screen = 2131230858;
public const int save_scale_type = 2131230858;
// aapt resource value: 0x7F08008B
public const int scroll = 2131230859;
// aapt resource value: 0x7F08008F
public const int scrollable = 2131230863;
public const int screen = 2131230859;
// aapt resource value: 0x7F08008C
public const int scrollIndicatorDown = 2131230860;
// aapt resource value: 0x7F08008D
public const int scrollIndicatorUp = 2131230861;
// aapt resource value: 0x7F08008E
public const int scrollView = 2131230862;
public const int scroll = 2131230860;
// aapt resource value: 0x7F080090
public const int search_badge = 2131230864;
public const int scrollable = 2131230864;
// aapt resource value: 0x7F08008D
public const int scrollIndicatorDown = 2131230861;
// aapt resource value: 0x7F08008E
public const int scrollIndicatorUp = 2131230862;
// aapt resource value: 0x7F08008F
public const int scrollView = 2131230863;
// aapt resource value: 0x7F080091
public const int search_bar = 2131230865;
public const int search_badge = 2131230865;
// aapt resource value: 0x7F080092
public const int search_button = 2131230866;
public const int search_bar = 2131230866;
// aapt resource value: 0x7F080093
public const int search_close_btn = 2131230867;
public const int search_button = 2131230867;
// aapt resource value: 0x7F080094
public const int search_edit_frame = 2131230868;
public const int search_close_btn = 2131230868;
// aapt resource value: 0x7F080095
public const int search_go_btn = 2131230869;
public const int search_edit_frame = 2131230869;
// aapt resource value: 0x7F080096
public const int search_mag_icon = 2131230870;
public const int search_go_btn = 2131230870;
// aapt resource value: 0x7F080097
public const int search_plate = 2131230871;
public const int search_mag_icon = 2131230871;
// aapt resource value: 0x7F080098
public const int search_src_text = 2131230872;
public const int search_plate = 2131230872;
// aapt resource value: 0x7F080099
public const int search_voice_btn = 2131230873;
// aapt resource value: 0x7F08009B
public const int selected = 2131230875;
public const int search_src_text = 2131230873;
// aapt resource value: 0x7F08009A
public const int select_dialog_listview = 2131230874;
public const int search_voice_btn = 2131230874;
// aapt resource value: 0x7F08009C
public const int selected = 2131230876;
// aapt resource value: 0x7F08009B
public const int select_dialog_listview = 2131230875;
// aapt resource value: 0x7F080004
public const int SHIFT = 2131230724;
// aapt resource value: 0x7F08009C
public const int shortcut = 2131230876;
// aapt resource value: 0x7F08009D
public const int showCustom = 2131230877;
public const int shortcut = 2131230877;
// aapt resource value: 0x7F08009E
public const int showHome = 2131230878;
public const int showCustom = 2131230878;
// aapt resource value: 0x7F08009F
public const int showTitle = 2131230879;
public const int showHome = 2131230879;
// aapt resource value: 0x7F0800A0
public const int smallLabel = 2131230880;
public const int showTitle = 2131230880;
// aapt resource value: 0x7F0800A1
public const int snackbar_action = 2131230881;
public const int smallLabel = 2131230881;
// aapt resource value: 0x7F0800A2
public const int snackbar_text = 2131230882;
public const int snackbar_action = 2131230882;
// aapt resource value: 0x7F0800A3
public const int snap = 2131230883;
public const int snackbar_text = 2131230883;
// aapt resource value: 0x7F0800A4
public const int snapMargins = 2131230884;
public const int snap = 2131230884;
// aapt resource value: 0x7F0800A5
public const int spacer = 2131230885;
public const int snapMargins = 2131230885;
// aapt resource value: 0x7F0800A6
public const int split_action_bar = 2131230886;
public const int spacer = 2131230886;
// aapt resource value: 0x7F0800A7
public const int src_atop = 2131230887;
public const int split_action_bar = 2131230887;
// aapt resource value: 0x7F0800A8
public const int src_in = 2131230888;
public const int src_atop = 2131230888;
// aapt resource value: 0x7F0800A9
public const int src_over = 2131230889;
public const int src_in = 2131230889;
// aapt resource value: 0x7F0800AA
public const int start = 2131230890;
public const int src_over = 2131230890;
// aapt resource value: 0x7F0800AB
public const int status = 2131230891;
public const int start = 2131230891;
// aapt resource value: 0x7F0800AC
public const int stretch = 2131230892;
public const int status = 2131230892;
// aapt resource value: 0x7F0800AD
public const int studentParams = 2131230893;
public const int stretch = 2131230893;
// aapt resource value: 0x7F0800AE
public const int submenuarrow = 2131230894;
public const int studentParams = 2131230894;
// aapt resource value: 0x7F0800AF
public const int submit_area = 2131230895;
public const int submenuarrow = 2131230895;
// aapt resource value: 0x7F0800B0
public const int submit_area = 2131230896;
// aapt resource value: 0x7F080005
public const int SYM = 2131230725;
// aapt resource value: 0x7F0800B0
public const int tabMode = 2131230896;
// aapt resource value: 0x7F0800B1
public const int tag_transition_group = 2131230897;
public const int tabMode = 2131230897;
// aapt resource value: 0x7F0800B2
public const int tag_unhandled_key_event_manager = 2131230898;
public const int tag_transition_group = 2131230898;
// aapt resource value: 0x7F0800B3
public const int tag_unhandled_key_listeners = 2131230899;
public const int tag_unhandled_key_event_manager = 2131230899;
// aapt resource value: 0x7F0800B4
public const int text = 2131230900;
public const int tag_unhandled_key_listeners = 2131230900;
// aapt resource value: 0x7F0800B5
public const int text2 = 2131230901;
// aapt resource value: 0x7F0800BA
public const int textinput_counter = 2131230906;
// aapt resource value: 0x7F0800BB
public const int textinput_error = 2131230907;
// aapt resource value: 0x7F0800BC
public const int textinput_helper_text = 2131230908;
public const int text = 2131230901;
// aapt resource value: 0x7F0800B6
public const int textSpacerNoButtons = 2131230902;
public const int text2 = 2131230902;
// aapt resource value: 0x7F0800B7
public const int textSpacerNoTitle = 2131230903;
// aapt resource value: 0x7F0800BB
public const int textinput_counter = 2131230907;
// aapt resource value: 0x7F0800B8
public const int textStart = 2131230904;
// aapt resource value: 0x7F0800B9
public const int text_input_password_toggle = 2131230905;
// aapt resource value: 0x7F0800BC
public const int textinput_error = 2131230908;
// aapt resource value: 0x7F0800BD
public const int time = 2131230909;
public const int textinput_helper_text = 2131230909;
// aapt resource value: 0x7F0800B7
public const int textSpacerNoButtons = 2131230903;
// aapt resource value: 0x7F0800B8
public const int textSpacerNoTitle = 2131230904;
// aapt resource value: 0x7F0800B9
public const int textStart = 2131230905;
// aapt resource value: 0x7F0800BA
public const int text_input_password_toggle = 2131230906;
// aapt resource value: 0x7F0800BE
public const int title = 2131230910;
public const int time = 2131230910;
// aapt resource value: 0x7F0800BF
public const int titleDividerNoCustom = 2131230911;
public const int title = 2131230911;
// aapt resource value: 0x7F0800C0
public const int title_template = 2131230912;
public const int titleDividerNoCustom = 2131230912;
// aapt resource value: 0x7F0800C1
public const int top = 2131230913;
public const int title_template = 2131230913;
// aapt resource value: 0x7F0800C2
public const int topPanel = 2131230914;
public const int top = 2131230914;
// aapt resource value: 0x7F0800C3
public const int touch_outside = 2131230915;
public const int topPanel = 2131230915;
// aapt resource value: 0x7F0800C4
public const int transition_current_scene = 2131230916;
public const int touch_outside = 2131230916;
// aapt resource value: 0x7F0800C5
public const int transition_layout_save = 2131230917;
public const int transition_current_scene = 2131230917;
// aapt resource value: 0x7F0800C6
public const int transition_position = 2131230918;
public const int transition_layout_save = 2131230918;
// aapt resource value: 0x7F0800C7
public const int transition_scene_layoutid_cache = 2131230919;
public const int transition_position = 2131230919;
// aapt resource value: 0x7F0800C8
public const int transition_transform = 2131230920;
public const int transition_scene_layoutid_cache = 2131230920;
// aapt resource value: 0x7F0800C9
public const int uniform = 2131230921;
public const int transition_transform = 2131230921;
// aapt resource value: 0x7F0800CA
public const int unlabeled = 2131230922;
public const int uniform = 2131230922;
// aapt resource value: 0x7F0800CB
public const int up = 2131230923;
public const int unlabeled = 2131230923;
// aapt resource value: 0x7F0800CC
public const int useLogo = 2131230924;
public const int up = 2131230924;
// aapt resource value: 0x7F0800CD
public const int user = 2131230925;
public const int useLogo = 2131230925;
// aapt resource value: 0x7F0800CE
public const int view_offset_helper = 2131230926;
@@ -19,10 +19,11 @@
android:textStyle="bold"
android:textSize="16dp"/>
<Spinner
android:id="@+id/user"
<CheckBox
android:id="@+id/authorization"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
android:layout_height="wrap_content"
android:text="Авторизоваться через Личный кабинет"/>
<LinearLayout
android:id="@+id/studentParams"