Browse Source

First commit for the all app

master
Defend 7 years ago
commit
ee8a10de20
  1. 1
      app/.gitignore
  2. 128
      app/app.iml
  3. 27
      app/build.gradle
  4. BIN
      app/libs/jsevaluator-1.0.aar
  5. 17
      app/proguard-rules.pro
  6. 26
      app/src/main/AndroidManifest.xml
  7. 89
      app/src/main/java/ru/defend/defdevteam/tstu/FeedController.java
  8. 30
      app/src/main/java/ru/defend/defdevteam/tstu/FeedParser.java
  9. 75
      app/src/main/java/ru/defend/defdevteam/tstu/FeedReader.java
  10. 140
      app/src/main/java/ru/defend/defdevteam/tstu/MainActivity.java
  11. 550
      app/src/main/java/ru/defend/defdevteam/tstu/WebActivity.java
  12. 12
      app/src/main/res/drawable-v21/ic_menu_camera.xml
  13. 9
      app/src/main/res/drawable-v21/ic_menu_gallery.xml
  14. 9
      app/src/main/res/drawable-v21/ic_menu_manage.xml
  15. 9
      app/src/main/res/drawable-v21/ic_menu_send.xml
  16. 9
      app/src/main/res/drawable-v21/ic_menu_share.xml
  17. 9
      app/src/main/res/drawable-v21/ic_menu_slideshow.xml
  18. BIN
      app/src/main/res/drawable/Thumbs.db
  19. BIN
      app/src/main/res/drawable/logo.png
  20. 9
      app/src/main/res/drawable/side_nav_bar.xml
  21. 5
      app/src/main/res/drawable/subs_text_bg.xml
  22. 38
      app/src/main/res/layout/app_bar_web.xml
  23. 25
      app/src/main/res/layout/cabinet.xml
  24. 44
      app/src/main/res/layout/cabinet_about.xml
  25. 13
      app/src/main/res/layout/cabinet_facultylist.xml
  26. 13
      app/src/main/res/layout/cabinet_grouplist.xml
  27. 8
      app/src/main/res/layout/cabinet_journallist.xml
  28. 13
      app/src/main/res/layout/cabinet_newsfeed.xml
  29. 69
      app/src/main/res/layout/cabinet_profile.xml
  30. 24
      app/src/main/res/layout/cabinet_progress.xml
  31. 54
      app/src/main/res/layout/content_cabinet.xml
  32. 79
      app/src/main/res/layout/main.xml
  33. 34
      app/src/main/res/layout/nav_header_cabinet.xml
  34. 6
      app/src/main/res/layout/profile.xml
  35. 61
      app/src/main/res/layout/subscriptions.xml
  36. 9
      app/src/main/res/menu/cabinet.xml
  37. 45
      app/src/main/res/menu/cabinet_drawer.xml
  38. BIN
      app/src/main/res/mipmap-hdpi/ic_launcher.png
  39. BIN
      app/src/main/res/mipmap-mdpi/ic_launcher.png
  40. BIN
      app/src/main/res/mipmap-xhdpi/ic_launcher.png
  41. BIN
      app/src/main/res/mipmap-xxhdpi/ic_launcher.png
  42. BIN
      app/src/main/res/mipmap-xxxhdpi/Thumbs.db
  43. BIN
      app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
  44. BIN
      app/src/main/res/mipmap-xxxhdpi/mail.jpg
  45. 34
      app/src/main/res/values-en/strings.xml
  46. 34
      app/src/main/res/values-ru/strings.xml
  47. 9
      app/src/main/res/values-v21/styles.xml
  48. 6
      app/src/main/res/values-w820dp/dimens.xml
  49. 6
      app/src/main/res/values/colors.xml
  50. 9
      app/src/main/res/values/dimens.xml
  51. 8
      app/src/main/res/values/drawables.xml
  52. 37
      app/src/main/res/values/strings.xml
  53. 21
      app/src/main/res/values/styles.xml
  54. 16
      app/src/testDebug/aidl/ru/defend/defdevteam/tstu/FeedControllerTest.java
  55. 23
      build.gradle
  56. 18
      gradle.properties
  57. 6
      gradle/wrapper/gradle-wrapper.properties
  58. 11
      local.properties
  59. 1
      settings.gradle

1
app/.gitignore

@ -0,0 +1 @@
/build

128
app/app.iml

@ -0,0 +1,128 @@
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id=":app" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" external.system.module.group="TSTU" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="android-gradle" name="Android-Gradle">
<configuration>
<option name="GRADLE_PROJECT_PATH" value=":app" />
</configuration>
</facet>
<facet type="android" name="Android">
<configuration>
<option name="SELECTED_BUILD_VARIANT" value="debug" />
<option name="SELECTED_TEST_ARTIFACT" value="_android_test_" />
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
<afterSyncTasks>
<task>generateDebugSources</task>
</afterSyncTasks>
<option name="ALLOW_USER_CONFIGURATION" value="false" />
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
<option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res" />
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/build/intermediates/classes/debug" />
<output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/debug" />
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/builds" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/animated-vector-drawable/23.4.0/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.4.0/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/design/23.4.0/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/recyclerview-v7/23.4.0/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/23.4.0/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-vector-drawable/23.4.0/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-classes" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-runtime-classes" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-safeguard" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-verifier" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-resources" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-support" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/reload-dex" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/restart-dex" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
</content>
<orderEntry type="jdk" jdkName="Android API 25 Platform" jdkType="Android SDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" exported="" name="design-23.4.0" level="project" />
<orderEntry type="library" exported="" name="support-annotations-23.4.0" level="project" />
<orderEntry type="library" exported="" name="animated-vector-drawable-23.4.0" level="project" />
<orderEntry type="library" exported="" scope="TEST" name="hamcrest-core-1.3" level="project" />
<orderEntry type="library" exported="" name="support-v4-23.4.0" level="project" />
<orderEntry type="library" exported="" name="recyclerview-v7-23.4.0" level="project" />
<orderEntry type="library" exported="" scope="TEST" name="junit-4.12" level="project" />
<orderEntry type="library" exported="" name="support-vector-drawable-23.4.0" level="project" />
<orderEntry type="library" exported="" name="appcompat-v7-23.4.0" level="project" />
<orderEntry type="library" exported="" name="android-android-25" level="project" />
</component>
</module>

27
app/build.gradle

@ -0,0 +1,27 @@
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion '25.0.2'
defaultConfig {
applicationId "ru.defend.defdevteam.tstu"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'
}

BIN
app/libs/jsevaluator-1.0.aar

Binary file not shown.

17
app/proguard-rules.pro

@ -0,0 +1,17 @@
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in C:\Users\nikit_000\AppData\Local\Android\sdk/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Add any project specific keep options here:
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}

26
app/src/main/AndroidManifest.xml

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="ru.defend.defdevteam.tstu">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".WebActivity"
android:label="@string/title_activity_web"
android:theme="@style/AppTheme.NoActionBar"></activity>
</application>
</manifest>

89
app/src/main/java/ru/defend/defdevteam/tstu/FeedController.java

@ -0,0 +1,89 @@
package ru.defend.defdevteam.tstu;
import android.app.Activity;
import android.widget.TextView;
/**
* Created by thedefend on 29.11.16.
*/
public class FeedController {
FeedReader feedReader;
FeedUpdater feedUpdater;
String newsFeed;
int updateRate; //in minutes
private WebActivity activity;
public FeedController(WebActivity activity, int updateRate) {
this(activity, updateRate, "http://press.tstu.ru/?format=feed");
}
public FeedController(WebActivity activity, int updateRate, String rssUrl) {
feedReader = new FeedReader(this, rssUrl);
feedUpdater = new FeedUpdater();
this.activity = activity;
this.updateRate = updateRate;
feedUpdater.start();
}
private void startFeedReader() {
switch (feedReader.getThreadState()) {
case THREAD_FAIL:
feedReader.start();
break;
case THREAD_NULL:
feedReader.start();
break;
}
}
private boolean checkFeedReader() throws Exception{
switch (feedReader.getThreadState()) {
case THREAD_COMPLETE:
return true;
case THREAD_NULL:
return false;
default:
throw new Exception("Failed to get rss source string from FeedReader class");
}
}
public void feedUpdateAction(final String result) {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
activity.newsTextView.setText(result);
}
});
}
private class FeedUpdater extends Thread {
@Override
public void run() {
startFeedReader();
try {
//TODO: вернуть к норме updateRate*60*1000
sleep(updateRate*60);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public FeedUpdater() {
this.start();
}
}
public String getRssString() throws Exception{
if(checkFeedReader()) {
newsFeed = feedReader.getResult();
return newsFeed;
}
throw new Exception("Feed Reader returned empty string");
}
interface FeedCallback{
void Callback();
}
}

30
app/src/main/java/ru/defend/defdevteam/tstu/FeedParser.java

@ -0,0 +1,30 @@
package ru.defend.defdevteam.tstu;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
/**
* Created by thedefend on 29.11.16.
*/
public class FeedParser {
FeedParser(String omg) {
try {
DocumentBuilder documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
// Создается дерево DOM документа из файла
Document document = documentBuilder.parse(omg);
// Получаем корневой элемент
Node root = document.getDocumentElement();
} catch (Exception e) {
e.printStackTrace();
}
}
}

75
app/src/main/java/ru/defend/defdevteam/tstu/FeedReader.java

@ -0,0 +1,75 @@
package ru.defend.defdevteam.tstu;
import android.os.Handler;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
/**
* Created by thedefend on 28.11.16.
*/
public class FeedReader extends Thread implements FeedController.FeedCallback {
private String link;
private String result;
private FeedController feedController;
public enum States {
THREAD_NULL,
THREAD_WORK,
THREAD_FAIL,
THREAD_COMPLETE
}
private States threadState;
FeedReader (FeedController feedController, String link) {
this.link = link;
this.feedController = feedController;
this.threadState = States.THREAD_NULL;
}
public void run(){
try {
this.threadState = States.THREAD_WORK;
this.result = getRss(link);
this.threadState = States.THREAD_COMPLETE;
//TODO: слишком сильная взаимосвязь с управляющим классом
feedController.feedUpdateAction(result);
} catch (Exception e) {
this.threadState = States.THREAD_FAIL;
e.printStackTrace();
}
}
private String getRss(String link) throws Exception {
String tempString = null;
String inputString = "";
URL rssFeed = new URL(link);
BufferedReader inputStream = new BufferedReader(
new InputStreamReader(rssFeed.openStream()));
do {
if(tempString != null) {
inputString += tempString;
}
tempString = inputStream.readLine();
} while (tempString != null);
return inputString;
}
public States getThreadState() {
return this.threadState;
}
public String getResult() {
return this.result;
}
public void Callback(){
}
}

140
app/src/main/java/ru/defend/defdevteam/tstu/MainActivity.java

@ -0,0 +1,140 @@
package ru.defend.defdevteam.tstu;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private EditText login, password;
public ImageView logo;
private SharedPreferences sPref;
final String LOGIN = "login";
final String PASSWORD = "password";
final String CHECK = "check";
public CheckBox check;
static public List<MainActivity.groupList> subs;
public void authButtonOnClick(View v){
if(check.isChecked()){
saveForms();
}
Intent WebA = new Intent(this, WebActivity.class);
WebA.putExtra("login", login.getText().toString());
WebA.putExtra("pass", password.getText().toString());
startActivity(WebA);
//onFeedReaderComplete();
}
//TODO: Проверка авторизации здеся, хотя как ее тут пилить, когда ее нету лооол!
void saveForms() {
sPref = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor ed = sPref.edit();
ed.putString(LOGIN, login.getText().toString());
ed.putString(PASSWORD, password.getText().toString());
ed.putBoolean(CHECK, check.isChecked());
ed.apply();
}
void loadForms() {
sPref = getPreferences(MODE_PRIVATE);
login.setText(sPref.getString(LOGIN, ""));
password.setText(sPref.getString(PASSWORD, ""));
check.setChecked(sPref.getBoolean(CHECK, false));
}
public void updateForms(View v){
if(!check.isChecked()) {
password.setText("");
saveForms();
}
else {
saveForms();
}
}
public class subsAdapter extends ArrayAdapter<groupList> {
public subsAdapter(Context context) {
super(context, android.R.layout.simple_list_item_multiple_choice, subs);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
groupList group = getItem(position);
if(convertView == null){
convertView = LayoutInflater.from(getContext()).inflate(android.R.layout.simple_list_item_multiple_choice, null);
}
((TextView) convertView.findViewById(android.R.id.text1)).setText(group.name);
return convertView;
}
}
public class groupList {
public String name, rate;
public groupList(String name, String rate){
this.name = name;
this.rate = rate;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
login = (EditText) findViewById(R.id.editLogin);
password = (EditText) findViewById(R.id.passEdit);
check = (CheckBox) findViewById(R.id.save);
loadForms();
//TODO: убрать потом
subs = new ArrayList<groupList>();
subs.add(new groupList("test","test"));
subs.add(new groupList("test","test"));
subs.add(new groupList("test","test"));
subs.add(new groupList("test","test"));
setContentView(R.layout.subscriptions);
ArrayAdapter<groupList> subsL = new subsAdapter(this);
ListView subsList = (ListView) findViewById(R.id.subsList);
subsList.setAdapter(subsL);
}
@Override
protected void onResume() {
super.onResume();
Intent intent = getIntent();
if (!(intent.getStringExtra("error") == null)) {
Log.i("TESTINGG", intent.getStringExtra("error"));
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if(check.isChecked()) saveForms();
}
public void OnSubsListClick(View v) {
}
}

550
app/src/main/java/ru/defend/defdevteam/tstu/WebActivity.java

@ -0,0 +1,550 @@
package ru.defend.defdevteam.tstu;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.ViewGroup;
import android.webkit.ValueCallback;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ArrayAdapter;
import android.widget.Chronometer;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class WebActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
public WebView browser;
public WebSettings browserSet;
static public String AuthURL, MainURL, AdditionalURL ,JournalURL, RateValueURL, GroupRateURL,
FacultyRateURL, siteBuf;
static public String MainHTML, AdditionalHTML, JournalHTML, RateValueHTML, GroupRateHTML,
FacultyRateHTML;
boolean authBegin,taskFinished = false;
public TextView studentName, studentGroup, studentRate, positionGroup,
positionFaculty, newsTextView;
public RelativeLayout profileLayout, journalLayout, gRateLayout,
fRateLayout, aboutLayout, progressLayout, newsLayout;
public Toolbar myToolbar;
public Chronometer timer;
static public List<groupList> group, faculty, subs;
Intent MainA;
FeedController feedController;
public class groupList {
public String name, rate;
public groupList(String name, String rate){
this.name = name;
this.rate = rate;
}
}
public class groupAdapter extends ArrayAdapter<groupList> {
public groupAdapter(Context context){
super(context, android.R.layout.simple_list_item_2, group);
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
groupList group = getItem(position);
if (convertView == null){
convertView = LayoutInflater.from(getContext()).inflate(android.R.layout.simple_list_item_2, null);
}
((TextView) convertView.findViewById(android.R.id.text1)).setText(group.name);
((TextView) convertView.findViewById(android.R.id.text2)).setText(group.rate);
return convertView;
}
}
public class subsAdapter extends ArrayAdapter<groupList> {
public subsAdapter(Context context) {
super(context, android.R.layout.simple_selectable_list_item);
}
@NonNull
@Override
public View getView(int position, View convertView, ViewGroup parent) {
groupList group = getItem(position);
if(convertView == null){
convertView = LayoutInflater.from(getContext()).inflate(android.R.layout.simple_selectable_list_item, null);
}
((TextView) convertView.findViewById(android.R.id.text1)).setText(group.name);
return convertView;
}
}
public class facultyAdapter extends ArrayAdapter<groupList> {
public facultyAdapter(Context context){
super(context, android.R.layout.simple_list_item_2, faculty);
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
groupList group = getItem(position);
if (convertView == null){
convertView = LayoutInflater.from(getContext()).inflate(android.R.layout.simple_list_item_2, null);
}
((TextView) convertView.findViewById(android.R.id.text1)).setText(group.name);
((TextView) convertView.findViewById(android.R.id.text2)).setText(group.rate);
return convertView;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.cabinet);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
final DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
// toolbar.setNavigationOnClickListener(
// new View.OnClickListener() {
// @Override
// public void onClick(View view) {
// Log.d("Toolbar","Hmmm...");
// if(drawer.isDrawerOpen(GravityCompat.START)){
// drawer.openDrawer(GravityCompat.START);
// }
// }
// });
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
MainA = getIntent();
browser = (WebView) findViewById(R.id.webView);
browser.setWebViewClient(new MyWebViewClient());
browserSet = browser.getSettings();
browserSet.setJavaScriptEnabled(true);
studentName = (TextView) findViewById(R.id.studentName);
studentRate = (TextView) findViewById(R.id.studentRate);
studentGroup = (TextView) findViewById(R.id.studentGroup);
positionFaculty = (TextView) findViewById(R.id.positionFaculty);
newsTextView = (TextView) findViewById(R.id.newsTextView);
positionGroup = (TextView) findViewById(R.id.positionGroup);
profileLayout = (RelativeLayout) findViewById(R.id.profileLayout);
journalLayout = (RelativeLayout) findViewById(R.id.journalList);
gRateLayout = (RelativeLayout) findViewById(R.id.gRateLayout);
fRateLayout = (RelativeLayout) findViewById(R.id.fRateLayout);
aboutLayout = (RelativeLayout) findViewById(R.id.aboutLayout);
progressLayout = (RelativeLayout) findViewById(R.id.progressLayout);
newsLayout = (RelativeLayout) findViewById(R.id.newsLayout);
progressLayout.setVisibility(View.VISIBLE);
profileLayout.setVisibility(View.VISIBLE);
myToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(myToolbar);
navigationView.getMenu().getItem(1).setChecked(true);
myToolbar.setTitle(R.string.title_profile);
feedController = new FeedController(this, 1);
AuthURL = "http://web-iais.admin.tstu.ru:7777/zion/f?p=stud_main";
loadSite();
}
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.cabinet, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onNavigationItemSelected(MenuItem item) {
int id = item.getItemId();
newsLayout.setVisibility(View.INVISIBLE);
profileLayout.setVisibility(View.INVISIBLE);
journalLayout.setVisibility(View.INVISIBLE);
gRateLayout.setVisibility(View.INVISIBLE);
fRateLayout.setVisibility(View.INVISIBLE);
aboutLayout.setVisibility(View.INVISIBLE);
if(!taskFinished) {
progressLayout.setVisibility(View.VISIBLE);
}
switch (id) {
case R.id.nav_newsfeed:
progressLayout.setVisibility(View.INVISIBLE);
newsLayout.setVisibility(View.VISIBLE);
myToolbar.setTitle(R.string.title_newsfeed);
break;
case R.id.nav_profile:
profileLayout.setVisibility(View.VISIBLE);
myToolbar.setTitle(R.string.title_profile);
break;
case R.id.nav_journal:
journalLayout.setVisibility(View.VISIBLE);
myToolbar.setTitle(R.string.title_journal);
break;
case R.id.nav_grouprate:
gRateLayout.setVisibility(View.VISIBLE);
myToolbar.setTitle(R.string.title_grouprate);
break;
case R.id.nav_facultyrate:
fRateLayout.setVisibility(View.VISIBLE);
myToolbar.setTitle(R.string.title_globalrate);
break;
case R.id.nav_aboutapp:
progressLayout.setVisibility(View.INVISIBLE);
aboutLayout.setVisibility(View.VISIBLE);
myToolbar.setTitle(R.string.title_about_dev);
break;
case R.id.nav_changeacc:
finish();
break;
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
public static StringBuffer removeUTFCharacters(String data){
Pattern p = Pattern.compile("\\\\u(\\p{XDigit}{4})");
Matcher m = p.matcher(data);
StringBuffer buf = new StringBuffer(data.length());
while (m.find()) {
String ch = String.valueOf((char) Integer.parseInt(m.group(1), 16));
m.appendReplacement(buf, Matcher.quoteReplacement(ch));
}
m.appendTail(buf);
return buf;
}
public void loadSite () {
browser.loadUrl(AuthURL);
}
public String cutLine(String a, String b, String Line){
if(Line.contains(a)) Line = Line.substring(Line.indexOf(a)+ a.length());
if(Line.contains(b)) {
if(b == ""){
return Line;
}
Line = Line.substring(0, Line.indexOf(b));
return Line;
} else {
return "";
}
}
public String cutLine(String a, String b, String Line, boolean hard){
if ((!Line.contains(a)) || (a.equals("")) ) return "";
if ((!Line.contains(b)) || (b.equals("")) ) return "";
Line = Line.substring(Line.indexOf(a)+ a.length());
Line = Line.substring(0, Line.indexOf(b));
return Line;
}
// НЕИЗВЕСТНОЕ ИСКЛЮЧЕНИЕ
public void unknownState(int currentState){
Log.e("unknownState","Не удалось получить ссылки на странице студента");
Log.e("unknownState",browser.getUrl());
finish();
}
// АВТОРИЗАЦИЯ
public boolean Auth () {
authBegin = true;
String login = MainA.getStringExtra("login");
String password = MainA.getStringExtra("pass");
Log.i("Auth|Login", login);
Log.i("Auth|Password", password);
//console("Auth|Password",MainActivity.password.getText().toString());
//browser.loadUrl("javascript:apex.submit({request:'LOGIN',set:{'P101_USERNAME':'s75389','P101_PASSWORD':'v97KFxmP'}});");
browser.loadUrl("javascript:apex.submit({request:'LOGIN',set:{'P101_USERNAME':'"+login+"','P101_PASSWORD':'"+password+"'}});");
return true;
}
public byte sessionState () {
if(taskFinished) return 127;
Intent intent = new Intent();
Log.i("sessionActive","Checking session");
String a = cutLine("http://web-iais.admin.tstu.ru:7777/zion/f?p=503:",":",browser.getUrl());
switch (a){
case "LOGIN_DESKTOP":
Log.i("sessionActive","Окно авторизации");
//MainActivity.error.setText("Конец сессии авторизации");
finish();
return 0;
case "er":
Log.i("sessionActive","Окно авторизации");
//MainActivity.error.setText("Ошибка авторизации");
finish();
return 1;
case "1":
Log.i("sessionActive","Страница студента");
intent.putExtra("error","Вход производился успешно");
MainURL = browser.getUrl();
taskGenerator(2);
return 2;
case "40":
Log.i("sessionActive","Страница - Успеваемость");
taskGenerator(3);
return 3;
case "41":
Log.i("sessionActive","Страница - Журналы|Главная");
taskGenerator(4);
return 4;
case "43":
Log.i("sessionActive","Страница - Рейтинг|Главная");
String s = cutLine("","503:",MainURL) + "503:43:" + cutLine(":1:","",MainURL)+":";
if(cutLine(s,":NO:",browser.getUrl()).equals("RATE_GROUP")) {
taskGenerator(6);
return 6;
}
if(cutLine(s,":NO:",browser.getUrl()).equals("RATE_INST")) {
taskGenerator(7);
return 7;
}
taskGenerator(5);
return 5;
}
return 0;
}
// Контент генератор
public void taskGenerator(int state){
if (!isFinishing())
switch (state){
case 2:
MainHTML = siteBuf;
String studNameGroup = cutLine("<span id=\\\"P1_STUD\\\" class=\\\"display_only\\\" style=\\\"font-size: 120%; font-family:Verdana, Arial, Helvetica, sans-serif; color: #0000FF; font-weight:bold\\\">",
"</span>",
MainHTML);
studentName.setText(cutLine(""," /",studNameGroup));
studentGroup.setText("Группа: " + cutLine("/ ","",studNameGroup));
browser.loadUrl("javascript:apex.submit('T_ЗАНЯТИЯ/ОЦЕНКИ');");
break;
case 3:
AdditionalHTML = siteBuf;
JournalURL = "http://web-iais.admin.tstu.ru:7777/zion/" +
cutLine("<td headers=\\\"BRS\\\"><a href=\\\"","\" title=\\\"Просмотр журналов\\\">",AdditionalHTML);
RateValueURL = "http://web-iais.admin.tstu.ru:7777/zion/" +
cutLine("<td headers=\\\"RTG\\\"><a href=\\\"","\\\" title=\\\"Просмотр успеваемости\\\">",AdditionalHTML);
browser.loadUrl(JournalURL);
break;
case 4:
JournalHTML = siteBuf;
browser.loadUrl(RateValueURL);
break;
case 5:
RateValueHTML = siteBuf;
String rate = cutLine("<td align=\\\"center\\\" headers=\\\"STUDRATE\\\">","</td>",RateValueHTML);
studentRate.setText("Балл: " + rate);
GroupRateURL = "http://web-iais.admin.tstu.ru:7777/zion/" + cutLine("><td headers=\\\"GROUP_NAME\\\"><a href=\\\"","\\\">",RateValueHTML);
FacultyRateURL = "http://web-iais.admin.tstu.ru:7777/zion/" + cutLine("<td headers=\\\"INST\\\"><a href=\\\"","\\\">", RateValueHTML);
browser.loadUrl(GroupRateURL);
break;
case 6:
GroupRateHTML = siteBuf;
fillGroup();
browser.loadUrl(FacultyRateURL);
break;
case 7:
FacultyRateHTML = siteBuf;
fillFaculty();
fillAll();
taskFinished = true;
progressLayout.setVisibility(View.INVISIBLE);
break;
}
}
public void fillGroup(){
group = new ArrayList<groupList>();
String n,r;
String gr = siteBuf;
gr = cutLine("<h1>Рейтинг в группе</h1>", "", gr);
int i = 0;
while ( !(cutLine("<tr><td align=\\\"center\\\" headers=\\\"ROWNUM\\\">","</tr>",gr,true) == "")){
Integer s = Integer.valueOf(cutLine("<td align=\\\"center\\\" headers=\\\"ROWNUM\\\">","</td>",gr));
if(s == (i+1)) {
n = cutLine("<td headers=\\\"STUDNAME\\\">", "</td>", gr);
if (!(cutLine("<font color=\\\"red\\\"><b>", "</b></font>", n) == ""))
n = cutLine("<font color=\\\"red\\\"><b>", "</b></font>",n);
r = cutLine("<td align=\\\"center\\\" headers=\\\"STUDRATE\\\">", "</td>", gr);
r += " | Группа: " + cutLine("<td headers=\\\"GROUP_NAME\\\">","</td>", gr, true);
group.add(new groupList(n,"Общий балл: " + r));
i++;
}
gr = cutLine("</td></tr>\\n", "", gr);
}
ArrayAdapter<groupList> groupL = new groupAdapter(this);
ListView groupList = (ListView) findViewById(R.id.groupList);
groupList.setAdapter(groupL);
}
public void fillFaculty(){
faculty = new ArrayList<groupList>();
String n,r;
String fr = siteBuf;
fr = cutLine("<h1>Рейтинг в институте/факультете</h1>", "", fr);
int i = 0;
while ( !(cutLine("<tr><td align=\\\"center\\\" headers=\\\"ROWNUM\\\">","</tr>",fr,true) == "")){
Integer s = Integer.valueOf(cutLine("<td align=\\\"center\\\" headers=\\\"ROWNUM\\\">","</td>",fr));
if(s == (i+1)) {
n = cutLine("<td headers=\\\"STUDNAME\\\">", "</td>", fr);
if (!(cutLine("<font color=\\\"red\\\"><b>", "</b></font>", n) == ""))
n = cutLine("<font color=\\\"red\\\"><b>", "</b></font>",n);
r = cutLine("<td align=\\\"center\\\" headers=\\\"STUDRATE\\\">", "</td>", fr);
r += " | Группа: " + cutLine("<td headers=\\\"GROUP_NAME\\\">","</td>", fr, true);
faculty.add(new groupList(n,"Общий балл: " + r));
i++;
}
fr = cutLine("</td></tr>\\n", "", fr);
}
ArrayAdapter<groupList> facultyL = new facultyAdapter(this);
ListView facultyList = (ListView) findViewById(R.id.facultyList);
facultyList.setAdapter(facultyL);
}
//TODO: Переделать к хуям позор ниже
public void fillAll(){
String s;
String s2 = GroupRateHTML;
s = cutLine("<tr>","</tr>",GroupRateHTML);
s = cutLine("<font","</font>",s);
while (s.equals("")) {
s2 = cutLine("</tr>","",s2);
s = cutLine("<tr>","</tr>",s2);
s = cutLine("<font","</font>",s);
}
s2 = cutLine("<td align=\\\"center\\\" headers=\\\"ROWNUM\\\">","</td>",s2);
Log.i("GroupPos",s2);
positionGroup.setText("Место в группе: " + s2);
s = "";
s2 = FacultyRateHTML;
s = cutLine("<tr>","</tr>",FacultyRateHTML);
s = cutLine("<font","</font>",s);
while (s.equals("")) {
s2 = cutLine("</tr>","",s2);
s = cutLine("<tr>","</tr>",s2);
s = cutLine("<font","</font>",s);
}
s2 = cutLine("<td align=\\\"center\\\" headers=\\\"ROWNUM\\\">","</td>",s2);
Log.i("FacultyPos",s2);
positionFaculty.setText("Место в институте: " + s2);
}
public void buttonRefresh (View v) {
getHTML();
}
public void buttonLogout (View v) {
finish();
}
@TargetApi(19)
public void getHTML(){
browser.evaluateJavascript("javascript:document.documentElement.outerHTML;", new ValueCallback<String>() {
@Override
public void onReceiveValue(String s) {
siteBuf = s;
encodeHTML();
if(!authBegin) Auth();
else sessionState();
}
});
}
public void encodeHTML(){
if(siteBuf != null){
siteBuf = removeUTFCharacters(siteBuf).toString();
Log.d("Response html","Загружена страница "+cutLine("<title>","</title>",siteBuf));
Log.i("encodeHTML",siteBuf);
}
}
private class MyWebViewClient extends WebViewClient {
@Override
public void onPageFinished(WebView view, String url) {
getHTML();
Log.i("onPageFinished",browser.getUrl());
}
}
}

12
app/src/main/res/drawable-v21/ic_menu_camera.xml

@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M12,12m-3.2,0a3.2,3.2 0,1 1,6.4 0a3.2,3.2 0,1 1,-6.4 0" />
<path
android:fillColor="#FF000000"
android:pathData="M9,2L7.17,4H4c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2V6c0,-1.1 -0.9,-2 -2,-2h-3.17L15,2H9zm3,15c-2.76,0 -5,-2.24 -5,-5s2.24,-5 5,-5 5,2.24 5,5 -2.24,5 -5,5z" />
</vector>

9
app/src/main/res/drawable-v21/ic_menu_gallery.xml

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M22,16V4c0,-1.1 -0.9,-2 -2,-2H8c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2zm-11,-4l2.03,2.71L16,11l4,5H8l3,-4zM2,6v14c0,1.1 0.9,2 2,2h14v-2H4V6H2z" />
</vector>

9
app/src/main/res/drawable-v21/ic_menu_manage.xml

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M22.7,19l-9.1,-9.1c0.9,-2.3 0.4,-5 -1.5,-6.9 -2,-2 -5,-2.4 -7.4,-1.3L9,6 6,9 1.6,4.7C0.4,7.1 0.9,10.1 2.9,12.1c1.9,1.9 4.6,2.4 6.9,1.5l9.1,9.1c0.4,0.4 1,0.4 1.4,0l2.3,-2.3c0.5,-0.4 0.5,-1.1 0.1,-1.4z" />
</vector>

9
app/src/main/res/drawable-v21/ic_menu_send.xml

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M2.01,21L23,12 2.01,3 2,10l15,2 -15,2z" />
</vector>

9
app/src/main/res/drawable-v21/ic_menu_share.xml

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M18,16.08c-0.76,0 -1.44,0.3 -1.96,0.77L8.91,12.7c0.05,-0.23 0.09,-0.46 0.09,-0.7s-0.04,-0.47 -0.09,-0.7l7.05,-4.11c0.54,0.5 1.25,0.81 2.04,0.81 1.66,0 3,-1.34 3,-3s-1.34,-3 -3,-3 -3,1.34 -3,3c0,0.24 0.04,0.47 0.09,0.7L8.04,9.81C7.5,9.31 6.79,9 6,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3c0.79,0 1.5,-0.31 2.04,-0.81l7.12,4.16c-0.05,0.21 -0.08,0.43 -0.08,0.65 0,1.61 1.31,2.92 2.92,2.92 1.61,0 2.92,-1.31 2.92,-2.92s-1.31,-2.92 -2.92,-2.92z" />
</vector>

9
app/src/main/res/drawable-v21/ic_menu_slideshow.xml

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M4,6H2v14c0,1.1 0.9,2 2,2h14v-2H4V6zm16,-4H8c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2V4c0,-1.1 -0.9,-2 -2,-2zm-8,12.5v-9l6,4.5 -6,4.5z" />
</vector>

BIN
app/src/main/res/drawable/Thumbs.db

Binary file not shown.

BIN
app/src/main/res/drawable/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

9
app/src/main/res/drawable/side_nav_bar.xml

@ -0,0 +1,9 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="135"
android:centerColor="#235AB0"
android:endColor="#FFFFFF"
android:startColor="#235AB0"
android:type="linear" />
</shape>

5
app/src/main/res/drawable/subs_text_bg.xml

@ -0,0 +1,5 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
</shape>

38
app/src/main/res/layout/app_bar_web.xml

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="ru.defend.defdevteam.tstu.WebActivity"
android:visibility="visible">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay"
android:visibility="visible">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay"
android:visibility="visible" />
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_cabinet" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
android:src="@android:drawable/ic_menu_set_as"
android:visibility="invisible" />
</android.support.design.widget.CoordinatorLayout>

25
app/src/main/res/layout/cabinet.xml

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">
<include
layout="@layout/app_bar_web"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_cabinet"
app:menu="@menu/cabinet_drawer" />
</android.support.v4.widget.DrawerLayout>

44
app/src/main/res/layout/cabinet_about.xml

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/aboutLayout" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/about_title"
android:id="@+id/textView3"
android:layout_marginTop="25dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:textStyle="normal"
android:layout_marginRight="20dp"
android:layout_marginLeft="20dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/creator"
android:layout_marginRight="20dp"
android:id="@+id/textView5"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginTop="49dp"
android:layout_below="@+id/textView4"
android:layout_alignRight="@+id/textView4"
android:layout_alignEnd="@+id/textView4" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/about_content"
android:id="@+id/textView4"
android:gravity="center"
android:layout_below="@+id/textView3"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="11dp" />
</RelativeLayout>

13
app/src/main/res/layout/cabinet_facultylist.xml

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:showIn="@layout/content_cabinet">
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/facultyList"
android:visibility="visible" />
</RelativeLayout>

13
app/src/main/res/layout/cabinet_grouplist.xml

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:showIn="@layout/content_cabinet">
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/groupList"
android:visibility="visible" />
</RelativeLayout>

8
app/src/main/res/layout/cabinet_journallist.xml

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:showIn="@layout/content_cabinet">
</RelativeLayout>

13
app/src/main/res/layout/cabinet_newsfeed.xml

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:showIn="@layout/content_cabinet">
<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/newsTextView" />
</RelativeLayout>

69
app/src/main/res/layout/cabinet_profile.xml

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<WebView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/webView"
android:visibility="invisible"
android:alpha="0.2"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/student_surname_name"
android:id="@+id/studentName"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="24dp"
android:layout_marginStart="24dp"
android:layout_marginTop="22dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Группа: "
android:id="@+id/studentGroup"
android:layout_below="@+id/studentName"
android:layout_alignLeft="@+id/studentName"
android:layout_alignStart="@+id/studentName" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Балл:"
android:id="@+id/studentRate"
android:layout_below="@+id/studentGroup"
android:layout_alignLeft="@+id/studentGroup"
android:layout_alignStart="@+id/studentGroup" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Место в группе:"
android:id="@+id/positionGroup"
android:layout_below="@+id/studentRate"
android:layout_alignLeft="@+id/studentRate"
android:layout_alignStart="@+id/studentRate" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Место в институте:"
android:id="@+id/positionFaculty"
android:layout_below="@+id/positionGroup"
android:layout_alignLeft="@+id/positionGroup"
android:layout_alignStart="@+id/positionGroup" />
</RelativeLayout>

24
app/src/main/res/layout/cabinet_progress.xml

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/progressBar"
android:layout_gravity="center"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/progress_content"
android:id="@+id/textView"
android:layout_gravity="center_horizontal|bottom"
android:layout_below="@+id/progressBar"
android:layout_centerHorizontal="true" />
</RelativeLayout>

54
app/src/main/res/layout/content_cabinet.xml

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="ru.defend.defdevteam.tstu.WebActivity"
tools:showIn="@layout/app_bar_web"
android:id="@+id/mainLayout">
<include layout="@layout/cabinet_about"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/aboutLayout"
android:visibility="invisible"/>
<include layout="@layout/cabinet_journallist"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/journalList"
android:visibility="invisible"/>
<include layout="@layout/cabinet_grouplist"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/gRateLayout"
android:visibility="invisible"/>
<include layout="@layout/cabinet_progress"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:id="@+id/progressLayout"
android:visibility="invisible"/>
<include layout="@layout/cabinet_profile"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/profileLayout"
android:visibility="invisible"/>
<include layout="@layout/cabinet_facultylist"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/fRateLayout"
android:visibility="invisible" />
<include layout="@layout/cabinet_newsfeed"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/newsLayout"
android:visibility="invisible"/>
</RelativeLayout>

79
app/src/main/res/layout/main.xml

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="visible">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/creator"
android:id="@+id/textView"
android:layout_gravity="center_horizontal|bottom" />
</FrameLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/logoView"
android:layout_gravity="center_horizontal"
android:background="@drawable/logo"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editLogin"
android:layout_gravity="center_horizontal"
android:hint="@string/hint_login" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:id="@+id/passEdit"
android:layout_gravity="center_horizontal"
android:hint="@string/hint_password" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal">
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/checkbox_remember_user"
android:id="@+id/save"
android:layout_gravity="left|center_vertical"
android:onClick="updateForms" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_log_in"
android:id="@+id/authButton"
android:layout_gravity="right|center_vertical"
android:clickable="true"
android:enabled="true"
android:onClick="authButtonOnClick" />
</FrameLayout>
</LinearLayout>
</RelativeLayout>

34
app/src/main/res/layout/nav_header_cabinet.xml

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="@dimen/nav_header_height"
android:background="@drawable/side_nav_bar"
android:gravity="bottom"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:theme="@style/ThemeOverlay.AppCompat.Dark">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:background="@mipmap/ic_launcher" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:text="@string/nav_header_title"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/dev_site" />
</LinearLayout>

6
app/src/main/res/layout/profile.xml

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
</LinearLayout>

61
app/src/main/res/layout/subscriptions.xml

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:screenOrientation="portrait">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.5">
<ImageView
android:layout_height="wrap_content"
android:scaleType="centerCrop"
app:srcCompat="@mipmap/mail"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:id="@+id/imageView2"
android:layout_width="wrap_content"/>
<GridLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="36dp"
android:layout_marginLeft="100dp"
android:layout_alignParentBottom="true">
<TextView
android:text="Выберите подписки"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView2"
android:textAppearance="@style/TextAppearance.AppCompat.Button"
android:textSize="18sp"
android:layout_marginLeft="20dp"/>
<TextView
android:text="Кажется, что вы впервые в этом приложение, а значит нам нужно узнать, что вам интересно."
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginRight="10dp"
android:id="@+id/textView6"
android:textAppearance="@style/TextAppearance.AppCompat.Caption" />
</GridLayout>
</RelativeLayout>
<ListView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.5"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:id="@+id/subsList"/>
</LinearLayout>

9
app/src/main/res/menu/cabinet.xml

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="@string/action_settings"
app:showAsAction="never" />
</menu>

45
app/src/main/res/menu/cabinet_drawer.xml

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_newsfeed"
android:icon="@android:drawable/ic_input_get"
android:title="@string/nav_newsfeed" />
<item
android:id="@+id/nav_profile"
android:icon="@android:drawable/ic_input_get"
android:title="@string/nav_student_profile" />
<item
android:id="@+id/nav_schedule"
android:icon="@android:drawable/ic_input_get"
android:title="@string/nav_shedule" />
<item
android:id="@+id/nav_journal"
android:icon="@android:drawable/ic_menu_sort_alphabetically"
android:title="@string/nav_gradebook" />
<item
android:id="@+id/nav_grouprate"
android:icon="@drawable/abc_ic_star_half_black_36dp"
android:title="@string/nav_group_rating" />
<item
android:id="@+id/nav_facultyrate"
android:icon="@drawable/abc_ic_star_black_36dp"
android:title="@string/nav_faculty_rating" />
</group>
<item android:title="@string/web_drawer_others" >
<menu>
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_aboutapp"
android:icon="@drawable/ic_menu_send"
android:title="@string/nav_add_about_devs"/>
<item
android:id="@+id/nav_changeacc"
android:icon="@android:drawable/ic_menu_set_as"
android:title="@string/nav_add_log_out"/>
</group>
</menu>
</item>
</menu>

BIN
app/src/main/res/mipmap-hdpi/ic_launcher.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

BIN
app/src/main/res/mipmap-mdpi/ic_launcher.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

BIN
app/src/main/res/mipmap-xhdpi/ic_launcher.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

BIN
app/src/main/res/mipmap-xxhdpi/ic_launcher.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

BIN
app/src/main/res/mipmap-xxxhdpi/Thumbs.db

Binary file not shown.

BIN
app/src/main/res/mipmap-xxxhdpi/ic_launcher.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
app/src/main/res/mipmap-xxxhdpi/mail.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

34
app/src/main/res/values-en/strings.xml

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">TSTU Student App</string>
<string name="progress_content">Updating data</string>
<string name="creator">Defend Development 2017</string>
<string name="action_settings">Settings</string>
<string name="navigation_drawer_close">Close navigation drawer</string>
<string name="navigation_drawer_open">Open navigation drawer</string>
<string name="about_title">Application \"TSTU Student App\" Alpha 1</string>
<string name="about_content">This application have only education targets and have no any commercial profit. You can find out more about app on this site: \"http://defend.pw/</string>
<string name="title_activity_web">Cabinet</string>
<string name="hint_password">Student password</string>
<string name="hint_login">Student login</string>
<string name="checkbox_remember_user">Remember me</string>
<string name="student_surname_name">Student surname/name</string>
<string name="app_log_in">Log In</string>
<string name="title_profile">Your profile</string>
<string name="title_newsfeed">News feed</string>
<string name="title_journal">Gradebook</string>
<string name="title_grouprate">Group rating</string>
<string name="title_about_dev">About developers</string>
<string name="title_globalrate">Faculty rating</string>
<string name="web_drawer_others">Other</string>
<string name="nav_shedule">Shedule</string>
<string name="nav_newsfeed">News Feed</string>
<string name="nav_group_rating">Group Rating</string>
<string name="nav_gradebook">Gradebook</string>
<string name="nav_student_profile">Profile</string>
<string name="nav_faculty_rating">Faculty Rating</string>
<string name="nav_add_about_devs">About developers</string>
<string name="nav_add_log_out">Log Out</string>
<string name="nav_header_title">TSTU Student App</string>
<string name="dev_site">http://defend.pw/</string>
</resources>

34
app/src/main/res/values-ru/strings.xml

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">TSTU Student App</string>
<string name="about_content">Данное приложение имеет только образовательные цели и не нацелено на коммерческую выгоду. О судьбе приложения можно узнать на сайте http://defend.pw/</string>
<string name="about_title">Приложение \"TSTU Student App\" Альфа 1</string>
<string name="action_settings">Настройки</string>
<string name="creator">Defend Development 2017</string>
<string name="navigation_drawer_close">Закрыть панель навигации</string>
<string name="navigation_drawer_open">Открыть панель навигации</string>
<string name="progress_content">Обновляем данные</string>
<string name="title_activity_web">Кабинет</string>
<string name="hint_password">Пароль студента</string>
<string name="hint_login">Логин студента</string>
<string name="checkbox_remember_user">Запомнить меня</string>
<string name="student_surname_name">ФИО Студента</string>
<string name="app_log_in">Вход в кабинет</string>
<string name="title_profile">Твой профиль</string>
<string name="title_newsfeed">Новостная лента</string>
<string name="title_journal">Журнал оценок</string>
<string name="title_grouprate">Рейтинг в группе</string>
<string name="title_about_dev">О разработчиках</string>
<string name="title_globalrate">Рейтинг в институте</string>
<string name="web_drawer_others">Дополнительно</string>
<string name="nav_shedule">Расписание</string>
<string name="nav_newsfeed">Новостная лента</string>
<string name="nav_student_profile">Личный профиль</string>
<string name="nav_group_rating">Рейтинг в группе</string>
<string name="nav_gradebook">Журнал оценок</string>
<string name="nav_faculty_rating">Рейтинг в институте</string>
<string name="nav_add_about_devs">О разработчиках</string>
<string name="nav_add_log_out">Выйти из кабинета</string>
<string name="nav_header_title">TSTU Student App</string>
<string name="dev_site">http://defend.pw/</string>
</resources>

9
app/src/main/res/values-v21/styles.xml

@ -0,0 +1,9 @@
<resources>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
</resources>

6
app/src/main/res/values-w820dp/dimens.xml

@ -0,0 +1,6 @@
<resources>
<!-- Example customization of dimensions originally defined in res/values/dimens.xml
(such as screen margins) for screens with more than 820dp of available width. This
would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). -->
<dimen name="activity_horizontal_margin">64dp</dimen>
</resources>

6
app/src/main/res/values/colors.xml

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
</resources>

9
app/src/main/res/values/dimens.xml

@ -0,0 +1,9 @@
<resources>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="nav_header_vertical_spacing">16dp</dimen>
<dimen name="nav_header_height">160dp</dimen>
<dimen name="fab_margin">16dp</dimen>
</resources>

8
app/src/main/res/values/drawables.xml

@ -0,0 +1,8 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<item name="ic_menu_camera" type="drawable">@android:drawable/ic_menu_camera</item>
<item name="ic_menu_gallery" type="drawable">@android:drawable/ic_menu_gallery</item>
<item name="ic_menu_slideshow" type="drawable">@android:drawable/ic_menu_slideshow</item>
<item name="ic_menu_manage" type="drawable">@android:drawable/ic_menu_manage</item>
<item name="ic_menu_share" type="drawable">@android:drawable/ic_menu_share</item>
<item name="ic_menu_send" type="drawable">@android:drawable/ic_menu_send</item>
</resources>

37
app/src/main/res/values/strings.xml

@ -0,0 +1,37 @@
<resources>
<string name="app_name">TSTU Student App</string>
<string name="title_activity_web">Кабинет</string>
<string name="navigation_drawer_open">Открыть панель навигации</string>
<string name="navigation_drawer_close">Закрыть панель навигации</string>
<string name="creator">Defend Development 2017</string>
<string name="about_title">Приложение TSTU Student App\nAlpha 1</string>
<string name="about_content">Данное приложение имеет только образовательные цели и не нацелено на коммерческую выгоду.\n
О судьбе приложения можно узнать на сайте http://defend.pw/</string>
<string name="progress_content">Обновляем данные =)</string>
<string name="action_settings">Настройки</string>
<string name="hint_password">Пароль студента</string>
<string name="hint_login">Логин студента</string>
<string name="checkbox_remember_user">Запомнить меня</string>
<string name="student_surname_name">ФИО Студента</string>
<string name="app_log_in">Вход в кабинет</string>
<string name="title_profile">Твой профиль</string>
<string name="title_newsfeed">Новостная лента</string>
<string name="title_journal">Журнал оценок</string>
<string name="title_grouprate">Рейтинг в группе</string>
<string name="title_globalrate">Рейтинг в институте</string>
<string name="title_about_dev">О разработчиках</string>
<string name="web_drawer_others">Дополнительно</string>
<string name="nav_shedule">Расписание</string>
<string name="nav_student_profile">Личный профиль</string>
<string name="nav_newsfeed">Новостная лента</string>
<string name="nav_gradebook">Журнал оценок</string>
<string name="nav_group_rating">Рейтинг в группе</string>
<string name="nav_faculty_rating">Рейтинг в институте</string>
<string name="nav_add_about_devs">О разработчике</string>
<string name="nav_add_log_out">Выйти из кабинета</string>
<string name="nav_header_title">TSTU Студенческий Кабинет</string>
<string name="dev_site">http://defend.pw/</string>
</resources>

21
app/src/main/res/values/styles.xml

@ -0,0 +1,21 @@
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
</resources>

16
app/src/testDebug/aidl/ru/defend/defdevteam/tstu/FeedControllerTest.java

@ -0,0 +1,16 @@
package ru.defend.defdevteam.tstu;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* Created by thedefend on 30.11.16.
*/
public class FeedControllerTest {
@Test
public void getRssString() throws Exception {
}
}

23
build.gradle

@ -0,0 +1,23 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}

18
gradle.properties

@ -0,0 +1,18 @@
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx10248m -XX:MaxPermSize=256m
# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true

6
gradle/wrapper/gradle-wrapper.properties

@ -0,0 +1,6 @@
#Sat Oct 15 18:03:23 MSK 2016
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip

11
local.properties

@ -0,0 +1,11 @@
## This file is automatically generated by Android Studio.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
#Tue Jan 24 17:32:36 MSK 2017
sdk.dir=C\:\\Users\\itsmy\\AppData\\Local\\Android\\Sdk

1
settings.gradle

@ -0,0 +1 @@
include ':app'
Loading…
Cancel
Save