package com.example.curriculum;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.ColorStateList;
import android.graphics.Color;
import android.os.Bundle;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.RelativeSizeSpan;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.GridLayout;
import android.widget.ImageButton;
import android.widget.NumberPicker;
import android.widget.TextView;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.core.app.NotificationCompat;
import androidx.core.content.ContextCompat;
import androidx.core.view.GravityCompat;
import java.time.LocalDate;
import java.time.Period;
import java.time.YearMonth;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
public class MainActivity extends AppCompatActivity {
Context context = this;
Button goto_drawer, goto_week, goto_add_course; // 上面的按钮,三个,分别是打开抽屉,打开周选,添加课程
Button set_up, all_course, course_size, course_about;// 抽屉里的按钮,分别是设置,所有课程,课表大小,课表关于
GridLayout course_gridLayout; // 装课程的网格布局对话框
ImageButton drawerLayout_imageButton; // 抽屉上面的图片按钮,换主题用的
androidx.drawerlayout.widget.DrawerLayout drawer_layout; // 抽屉的引用
TextView month;
TextView[] textview_week = new TextView[7];
private static final String TAG = "i道iMainActivity";
AlertDialog week_dialog; // 周选对话框
SharedPreferences sharedPreferences_set_up, sharedPreferences_data; // 保存设置
SharedPreferences.Editor editor_set_up, editor_data; // 保存设置
int text_size, button_height, now_week, display_week; //文字大小,按钮高度,当前周,显示周
Calendar calendar = Calendar.getInstance(); // 获取日期
int initial_month, initial_day, now_year, now_month, now_day; //初始月份,初始日期,当前年份,当前月份,当前日期
int morning_number, afternoon_number, evening_number; // 上午,下午,晚上课程数
String morning_time, afternoon_time, evening_time; // 上午,下午,晚上的上课下课时间
int imageButton_theme = 0; // 当前主题,0亮1暗
Course_Data[] course_data;// 所有课程的数据
String[] all_course_data;
ArrayList<Button> course_buttons = new ArrayList<>(); // 所有课程的按钮
ArrayList<int[]> course_buttons_week = new ArrayList<>(); //为了方便通知,添加的课程在周几
TextView[] course_time = {}; // 时间轴文本框,有个初始值,防止访问失败
NotificationChannel channel;
NotificationManager notificationManager;
//打开栏侧边栏的触发器
private final View.OnClickListener onClickListener_drawer = new View.OnClickListener() {
@Override
public void onClick(View view) {//点击事件
try {
drawer_layout.openDrawer(GravityCompat.START);
} catch (Exception e) {
Log.e(TAG, "goto_drawer,error");
}
}
};
// 抽屉最上面更改主题的图片按钮
private final View.OnClickListener onClickListener_drawer_image = new View.OnClickListener() {
@Override
public void onClick(View view) {//点击事件
try {
if (imageButton_theme == 0) {
getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_YES);
imageButton_theme = 1;
} else {
getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_NO);
imageButton_theme = 0;
}
editor_set_up.putInt("imageButton_theme", imageButton_theme);
editor_set_up.apply();
} catch (Exception e) {
Log.e(TAG, "goto_drawer_image,error");
}
}
};
// 周选按钮
private final View.OnClickListener onClickListener_goto_week = new View.OnClickListener() {
@Override
public void onClick(View view) {//点击事件
try {
week_dialog.show(); // 显示对话框
} catch (Exception e) {
Log.e(TAG, "goto_week,error");
}
}
};
// 添加课程按钮
private final View.OnClickListener onClickListener_goto_add_course = new View.OnClickListener() {
@Override
public void onClick(View view) {//点击事件
try {
Intent intent = new Intent();
Bundle bundle = new Bundle(); // 带参数打开
bundle.putString("types of", "添加课程");
bundle.putString("parameter", "NULL");
intent.putExtras(bundle);
intent.setClass(MainActivity.this, New_Course_Activity.class);
startActivity(intent);
} catch (Exception e) {
Log.e(TAG, "goto_add_course,error");
}
}
};
// 打开所有课程的按钮
private final View.OnClickListener onClickListener_all_course = new View.OnClickListener() {
@Override
public void onClick(View view) {//点击事件
try {
Intent intent = new Intent();
intent.setClass(MainActivity.this, All_Course_Activity.class);
startActivity(intent);
} catch (Exception e) {
Log.e(TAG, "all_course,error");
}
}
};
// 打开设置的按钮
private final View.OnClickListener onClickListener_set_up = new View.OnClickListener() {
@Override
public void onClick(View view) {//点击事件
try {
Intent intent = new Intent();
intent.setClass(MainActivity.this, Set_Up_Activity.class);
startActivity(intent);
} catch (Exception e) {
Log.e(TAG, "set_up,error");
}
}
};
// 打开界面设置(课表大小)的按钮
private final View.OnClickListener onClickListener_course_size = new View.OnClickListener() {
@Override
public void onClick(View view) {//点击事件
try {
Intent intent = new Intent();
intent.setClass(MainActivity.this, Course_Size_Activity.class);
startActivity(intent);
} catch (Exception e) {
Log.e(TAG, "set_up,error");
}
}
};
private final View.OnClickListener onClickListener_course_about = new View.OnClickListener() { // 关于
@Override
public void onClick(View view) {//点击事件
new android.app.AlertDialog.Builder(MainActivity.this)
.setIcon(R.drawable.curriculum_pictures)
.setTitle("关于")
.setMessage("本程序由i道i制作").create().show();
}
};
public void Change_data() {// 更新数据
// 获取数据
all_course_data = sharedPreferences_data.getString("all_course_data", "").split(";");// 全部课程字符串
int all_course_data_len = sharedPreferences_data.getInt("all_course_data_len", 0);// 全部课程数目
course_data = new Course_Data[all_course_data_len];// 全部课程数组
for (int i = 0; i < all_course_data_len; i++) { // 获取所有课程
course_data[i] = new Course_Data(sharedPreferences_data.getString(all_course_data[i], "错误&1