Prechádzať zdrojové kódy

优化:老师端---我的主页--乐谱列表页--新增曲谱名称查询,和声部查询,请参考设计图

邓琴文 3 rokov pred
rodič
commit
708f74d56f
31 zmenil súbory, kde vykonal 431 pridanie a 96 odobranie
  1. 3 0
      BaseLibrary/build.gradle
  2. 1 1
      BaseLibrary/src/main/res/layout/list_popu_layout.xml
  3. BIN
      BaseLibrary/src/main/res/mipmap-hdpi/ic_launcher.webp
  4. BIN
      BaseLibrary/src/main/res/mipmap-hdpi/ic_launcher_round.webp
  5. BIN
      BaseLibrary/src/main/res/mipmap-mdpi/ic_launcher.webp
  6. BIN
      BaseLibrary/src/main/res/mipmap-mdpi/ic_launcher_round.webp
  7. 3 1
      student/src/main/AndroidManifest.xml
  8. 13 1
      student/src/main/java/com/cooleshow/student/ui/course/PracticeCourseDetailActivity.java
  9. 38 32
      student/src/main/java/com/cooleshow/student/ui/main/HomeFragment.java
  10. 1 1
      student/src/main/res/layout/fragment_home_layout.xml
  11. 5 0
      teacher/src/main/AndroidManifest.xml
  12. 13 0
      teacher/src/main/java/com/cooleshow/teacher/adapter/MineIncomeAdapter.java
  13. 3 2
      teacher/src/main/java/com/cooleshow/teacher/api/APIService.java
  14. 14 0
      teacher/src/main/java/com/cooleshow/teacher/bean/request/SheetMusicEntry.java
  15. 6 0
      teacher/src/main/java/com/cooleshow/teacher/contract/SheetMusicPageContract.java
  16. 29 11
      teacher/src/main/java/com/cooleshow/teacher/presenter/homePage/SheetMusicPagePresenter.java
  17. 6 8
      teacher/src/main/java/com/cooleshow/teacher/ui/comment/CourseCommentDetailActivity.java
  18. 11 2
      teacher/src/main/java/com/cooleshow/teacher/ui/course/SparringCourseDetailActivity.java
  19. 75 19
      teacher/src/main/java/com/cooleshow/teacher/ui/homepage/SheetMusicPageFragment.java
  20. 11 0
      teacher/src/main/java/com/cooleshow/teacher/ui/main/HomeFragment.kt
  21. 6 6
      teacher/src/main/java/com/cooleshow/teacher/ui/mine/FeedBackActivity.java
  22. 91 0
      teacher/src/main/java/com/cooleshow/teacher/widgets/CourseSearchView.java
  23. 1 0
      teacher/src/main/res/layout/activity_feedback.xml
  24. 8 7
      teacher/src/main/res/layout/activity_home_page_layout.xml
  25. 70 0
      teacher/src/main/res/layout/course_search_view.xml
  26. 16 5
      teacher/src/main/res/layout/fragment_sheet_music_page_layout.xml
  27. BIN
      teacher/src/main/res/mipmap-xhdpi/small_search_icon.png
  28. BIN
      teacher/src/main/res/mipmap-xxhdpi/small_search_icon.png
  29. BIN
      teacher/src/main/res/mipmap-xxxhdpi/small_search_icon.png
  30. 1 0
      teacher/src/main/res/values/strings.xml
  31. 6 0
      teacher/src/main/res/values/styles.xml

+ 3 - 0
BaseLibrary/build.gradle

@@ -181,4 +181,7 @@ dependencies {
     api 'org.java-websocket:Java-WebSocket:1.5.1'
     api project(path: ':midiplaylib')
     api 'org.greenrobot:eventbus:3.1.1'
+
+    //UI适配
+    api 'me.jessyan:autosize:1.2.1'
 }

+ 1 - 1
BaseLibrary/src/main/res/layout/list_popu_layout.xml

@@ -1,7 +1,7 @@
 <?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="match_parent"
+    android:layout_height="wrap_content"
     android:orientation="vertical">
 
     <androidx.recyclerview.widget.RecyclerView

BIN
BaseLibrary/src/main/res/mipmap-hdpi/ic_launcher.webp


BIN
BaseLibrary/src/main/res/mipmap-hdpi/ic_launcher_round.webp


BIN
BaseLibrary/src/main/res/mipmap-mdpi/ic_launcher.webp


BIN
BaseLibrary/src/main/res/mipmap-mdpi/ic_launcher_round.webp


+ 3 - 1
student/src/main/AndroidManifest.xml

@@ -21,7 +21,9 @@
         android:requestLegacyExternalStorage="true"
         android:supportsRtl="true"
         android:theme="@style/AppTheme">
-
+        <meta-data
+            android:name="design_width_in_dp"
+            android:value="375" />
         <activity
             android:name=".ui.splash.SplashActivity"
             android:exported="true"

+ 13 - 1
student/src/main/java/com/cooleshow/student/ui/course/PracticeCourseDetailActivity.java

@@ -15,12 +15,14 @@ import androidx.recyclerview.widget.RecyclerView;
 import com.alibaba.android.arouter.facade.annotation.Route;
 import com.alibaba.android.arouter.launcher.ARouter;
 import com.cooleshow.base.router.RouterPath;
+import com.cooleshow.base.utils.TimeUtils;
 import com.cooleshow.base.utils.ToastUtils;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
 import com.cooleshow.base.utils.ActivityUtils;
 import com.cooleshow.base.utils.FileUtils;
 import com.cooleshow.base.utils.GlideUtils;
 import com.cooleshow.base.utils.ToastUtil;
+import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.student.R;
 import com.cooleshow.student.adapter.ItemMarkAdapter;
 import com.cooleshow.student.adapter.PracticeVideoWorkAdapter;
@@ -34,6 +36,7 @@ import com.cooleshow.student.presenter.course.PracticeCourseDetailPresenter;
 import com.tbruyelle.rxpermissions3.RxPermissions;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -99,6 +102,7 @@ public class PracticeCourseDetailActivity extends BaseMVPActivity<ActivityPracti
 
     @Override
     protected void initView() {
+        QMUIStatusBarHelper.setStatusBarLightMode(this);
         initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "课程详情");
         mCourseId = getIntent().getStringExtra(COURSE_ID);
         mCourseGroupId = getIntent().getStringExtra(COURSE_GROUP_ID);
@@ -149,8 +153,16 @@ public class PracticeCourseDetailActivity extends BaseMVPActivity<ActivityPracti
             return;
         }
         mInfoBean = infoBean;
+        String startTime = TimeUtils.date2String(TimeUtils.getDate(infoBean.startTime), "yyyy-MM-dd");
+        String endTime = TimeUtils.date2String(TimeUtils.getDate(infoBean.endTime), "yyyy-MM-dd");
+        if (TextUtils.equals(startTime, endTime)) {
+            String startTimeText = TimeUtils.date2String(TimeUtils.getDate(infoBean.startTime), "HH:mm");
+            String endTimeText = TimeUtils.date2String(TimeUtils.getDate(infoBean.endTime), "HH:mm");
+            viewBinding.tvCourseTime.setText(startTime + " " + startTimeText + "-" + endTimeText);
+        } else {
+            viewBinding.tvCourseTime.setText(infoBean.startTime + "-" + infoBean.endTime);
+        }
         //时间
-        viewBinding.tvCourseTime.setText(infoBean.classDate);
         //老师头像
         GlideUtils.INSTANCE.loadImage(this, infoBean.teacherAvatar, viewBinding.ivAvatar, R.drawable.icon_teacher_default_head);
         //title

+ 38 - 32
student/src/main/java/com/cooleshow/student/ui/main/HomeFragment.java

@@ -1,5 +1,6 @@
 package com.cooleshow.student.ui.main;
 
+import android.annotation.SuppressLint;
 import android.app.Activity;
 import android.graphics.Point;
 import android.graphics.Rect;
@@ -25,6 +26,7 @@ import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.fragment.BaseMVPFragment;
 import com.cooleshow.base.utils.GlideUtils;
 import com.cooleshow.base.utils.SPUtils;
+import com.cooleshow.base.utils.TimeUtils;
 import com.cooleshow.base.utils.helper.QMUIDisplayHelper;
 import com.cooleshow.student.R;
 import com.cooleshow.student.adapter.HomeHotAlbumAdapter;
@@ -54,6 +56,7 @@ import com.youth.banner.holder.BannerImageHolder;
 import com.youth.banner.listener.OnBannerListener;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.TreeMap;
 
@@ -128,6 +131,7 @@ public class HomeFragment extends BaseMVPFragment<FragmentHomeLayoutBinding, Hom
         super.onResume();
         presenter.queryCountOfUnread();
         presenter.queryUserInfo();
+        presenter.queryLiveAndVideo();
     }
 
     @Override
@@ -187,16 +191,16 @@ public class HomeFragment extends BaseMVPFragment<FragmentHomeLayoutBinding, Hom
         //banner自带图片轮播的适配器
         banner.setAdapter(new BannerImageAdapter<AppHomeBean.ItemBean>(bannerList) {
 
-                    @Override
-                    public void onBindView(BannerImageHolder holder, AppHomeBean.ItemBean data, int position, int size) {
-                        Glide.with(holder.imageView)
-                                .load(data.coverImage)
-                                .thumbnail(Glide.with(holder.itemView).load(com.cooleshow.base.R.drawable.bg_video_placeholder))//加载成功前显示一个loading的加载
-                                //.apply(RequestOptions.bitmapTransform(new RoundedCorners(30)))  //设置图片圆角
-                                .into(holder.imageView);
+            @Override
+            public void onBindView(BannerImageHolder holder, AppHomeBean.ItemBean data, int position, int size) {
+                Glide.with(holder.imageView)
+                        .load(data.coverImage)
+                        .thumbnail(Glide.with(holder.itemView).load(com.cooleshow.base.R.drawable.bg_video_placeholder))//加载成功前显示一个loading的加载
+                        //.apply(RequestOptions.bitmapTransform(new RoundedCorners(30)))  //设置图片圆角
+                        .into(holder.imageView);
 
-                    }
-                }, true).addBannerLifecycleObserver(this)//添加生命周期观察者
+            }
+        }, true).addBannerLifecycleObserver(this)//添加生命周期观察者
                 .setIntercept(true) //是否要拦截事件
                 .setBannerRound(10f) //圆角
                 .isAutoLoop(true)
@@ -224,16 +228,13 @@ public class HomeFragment extends BaseMVPFragment<FragmentHomeLayoutBinding, Hom
         presenter.queryLiveAndVideo();
         presenter.getStylePage();
 
-        mViewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
-            @Override
-            public void onRefresh(@NonNull RefreshLayout refreshLayout) {
-                mViewBinding.refreshLayout.finishRefresh();
-                presenter.appHome();
-                presenter.userAccountPage();
-                presenter.queryLiveAndVideo();
-                presenter.getStylePage();
-                presenter.queryUserInfo();
-            }
+        mViewBinding.refreshLayout.setOnRefreshListener(refreshLayout -> {
+            mViewBinding.refreshLayout.finishRefresh();
+            presenter.appHome();
+            presenter.userAccountPage();
+            presenter.queryLiveAndVideo();
+            presenter.getStylePage();
+            presenter.queryUserInfo();
         });
 
     }
@@ -251,7 +252,7 @@ public class HomeFragment extends BaseMVPFragment<FragmentHomeLayoutBinding, Hom
         if (null == flashPage || flashPage.size() == 0) {
             return;
         }
-        if(isShowFlashPage){
+        if (isShowFlashPage) {
             return;
         }
         DialogUtils.showHomeDialog(getContext(), flashPage.get(0));
@@ -322,12 +323,13 @@ public class HomeFragment extends BaseMVPFragment<FragmentHomeLayoutBinding, Hom
 
         if (TextUtils.isEmpty(data.subjectName)) {
             ARouter.getInstance().build(RouterPath.MineCenter.MINE_TEACHABLE_INSTRUMENT)
-                    .withBoolean("hintBar",true)
+                    .withBoolean("hintBar", true)
                     .navigation();
         }
     }
 
 
+    @SuppressLint("SetTextI18n")
     private void initRecentLive(HomeLiveAndVideoBean.RecentCoursesBean recentCourses) {
         if (null == recentCourses) {
             mViewBinding.clLive.setVisibility(View.GONE);
@@ -336,8 +338,15 @@ public class HomeFragment extends BaseMVPFragment<FragmentHomeLayoutBinding, Hom
         mViewBinding.clLive.setVisibility(View.VISIBLE);
         GlideUtils.INSTANCE.loadImage(getContext(), recentCourses.avatar, mViewBinding.imLiveHeader, R.drawable.icon_student_default_head);
         mViewBinding.tvLiveTitle.setText(recentCourses.courseGroupName);
-        mViewBinding.tvLiveTime.setText(recentCourses.courseStartTime);
-        mViewBinding.tvGoLive.setOnClickListener(v->{
+        String currentTime = TimeUtils.date2String(new Date(System.currentTimeMillis()), "yyyy-MM-dd");
+        String startTime = TimeUtils.date2String(TimeUtils.getDate(recentCourses.courseStartTime), "yyyy-MM-dd");
+        if (!TextUtils.isEmpty(recentCourses.courseStartTime) && TextUtils.equals(currentTime, startTime)) {
+            String timeText = TimeUtils.date2String(TimeUtils.getDate(recentCourses.courseStartTime), "HH:mm");
+            mViewBinding.tvLiveTime.setText("今日 " + timeText);
+        } else {
+            mViewBinding.tvLiveTime.setText(TimeUtils.date2String(TimeUtils.getDate(recentCourses.courseStartTime), "yyyy-MM-dd HH:mm"));
+        }
+        mViewBinding.tvGoLive.setOnClickListener(v -> {
             //进入直播
             ARouter.getInstance().build(RouterPath.CourseCenter.SPARRING_COURSE_DETAIL)
                     .withString(SparringCourseDetailActivity.COURSE_ID, String.valueOf(recentCourses.courseId))
@@ -383,15 +392,12 @@ public class HomeFragment extends BaseMVPFragment<FragmentHomeLayoutBinding, Hom
         mViewBinding.rvVideoCourse.setLayoutManager(manager);
         HomeVideoCourseAdapter homeLiveCourseAdapter = new HomeVideoCourseAdapter(liveList);
         mViewBinding.rvVideoCourse.setAdapter(homeLiveCourseAdapter);
-        homeLiveCourseAdapter.setOnItemClickListener(new OnItemClickListener() {
-            @Override
-            public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
-                HomeLiveAndVideoBean.VideoCourseBean item = (HomeLiveAndVideoBean.VideoCourseBean) adapter.getItem(position);
-                ARouter.getInstance()
-                        .build(RouterPath.WebCenter.ACTIVITY_HTML)
-                        .withString(WebConstants.WEB_URL, WebConstants.TEACHER_VIDEO_DETAIL + "?groupId=" + item.videoGroupId)
-                        .navigation();
-            }
+        homeLiveCourseAdapter.setOnItemClickListener((adapter, view, position) -> {
+            HomeLiveAndVideoBean.VideoCourseBean item = (HomeLiveAndVideoBean.VideoCourseBean) adapter.getItem(position);
+            ARouter.getInstance()
+                    .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                    .withString(WebConstants.WEB_URL, WebConstants.TEACHER_VIDEO_DETAIL + "?groupId=" + item.videoGroupId)
+                    .navigation();
         });
     }
 

+ 1 - 1
student/src/main/res/layout/fragment_home_layout.xml

@@ -121,7 +121,7 @@
                     android:layout_marginTop="@dimen/dp_17"
                     android:layout_marginRight="@dimen/dp_14"
                     android:background="@drawable/bg_white_30dp"
-                    android:visibility="visible">
+                    android:visibility="gone">
 
                     <de.hdodenhof.circleimageview.CircleImageView
                         android:id="@+id/im_live_header"

+ 5 - 0
teacher/src/main/AndroidManifest.xml

@@ -27,6 +27,11 @@
         android:requestLegacyExternalStorage="true"
         android:supportsRtl="true"
         android:theme="@style/AppTheme">
+
+        <meta-data
+            android:name="design_width_in_dp"
+            android:value="375" />
+
         <activity
             android:name=".ui.mine.UnBindBankCardActivity"
             android:exported="false" />

+ 13 - 0
teacher/src/main/java/com/cooleshow/teacher/adapter/MineIncomeAdapter.java

@@ -1,5 +1,6 @@
 package com.cooleshow.teacher.adapter;
 
+import android.text.TextUtils;
 import android.view.View;
 import android.widget.ImageView;
 import android.widget.TextView;
@@ -10,10 +11,12 @@ import com.chad.library.adapter.base.BaseQuickAdapter;
 import com.chad.library.adapter.base.module.BaseLoadMoreModule;
 import com.chad.library.adapter.base.module.LoadMoreModule;
 import com.chad.library.adapter.base.viewholder.BaseViewHolder;
+import com.cooleshow.base.utils.TimeUtils;
 import com.cooleshow.teacher.R;
 import com.cooleshow.teacher.bean.MusicSheetListBean;
 import com.cooleshow.teacher.bean.UserAccountBean;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -65,6 +68,16 @@ public class MineIncomeAdapter extends BaseQuickAdapter<UserAccountBean.RowsBean
         tv_name.setText(item.bizName);
         tv_price.setText(item.transAmount + "");
         tv_date.setText(item.endTime);
+
+        String startTime = TimeUtils.date2String(TimeUtils.getDate(item.startTime), "yyyy-MM-dd");
+        String endTime = TimeUtils.date2String(TimeUtils.getDate(item.endTime), "yyyy-MM-dd");
+        String startTimeText = TimeUtils.date2String(TimeUtils.getDate(item.startTime), "HH:mm");
+        String endTimeText = TimeUtils.date2String(TimeUtils.getDate(item.endTime), "HH:mm");
+        if (TextUtils.equals(startTime, endTime)) {
+            tv_date.setText(startTime + " " + startTimeText + "-" + endTimeText);
+        } else {
+            tv_date.setText(startTime + " " + startTimeText + "-" + endTime + " " + endTimeText);
+        }
     }
 
     @NonNull

+ 3 - 2
teacher/src/main/java/com/cooleshow/teacher/api/APIService.java

@@ -40,6 +40,7 @@ import com.cooleshow.teacher.bean.UserAccountBean;
 import com.cooleshow.teacher.bean.VideoCourseListBean;
 import com.cooleshow.teacher.bean.WithdrawalInfoBean;
 import com.cooleshow.teacher.bean.WithdrawalRecordBean;
+import com.cooleshow.teacher.bean.request.SheetMusicEntry;
 import com.cooleshow.teacher.bean.request.UnBindCardEntry;
 import com.cooleshow.usercenter.bean.SetDetailBean;
 import com.cooleshow.usercenter.bean.UserInfo;
@@ -112,7 +113,7 @@ public interface APIService {
      *
      * @return
      */
-    @POST(STUDENT_GROUP + "student/querySubjectItem")
+    @POST(TEACHER_GROUP + "teacher/querySubjectItem")
     Observable<BaseResponse<List<QuerySubjectBean>>> querySubjectItem();
 
     /**
@@ -296,7 +297,7 @@ public interface APIService {
      * @return
      */
     @POST(TEACHER_GROUP + "music/sheet/list")
-    Observable<BaseResponse<HomePageSheetMusicListBean>> getSheetMusicList(@Body RequestBody body);
+    Observable<BaseResponse<HomePageSheetMusicListBean>> getSheetMusicList(@Body SheetMusicEntry body);
 
     /**
      * 乐器列表查询

+ 14 - 0
teacher/src/main/java/com/cooleshow/teacher/bean/request/SheetMusicEntry.java

@@ -0,0 +1,14 @@
+package com.cooleshow.teacher.bean.request;
+
+/**
+ * @author dengqw
+ * @time 2022/6/30 22:14
+ * @describe:查询乐谱
+ **/
+public class SheetMusicEntry {
+    public String idAndName;
+    public String subjectIds;
+    public String auditStatus;
+    public int page;
+    public int rows;
+}

+ 6 - 0
teacher/src/main/java/com/cooleshow/teacher/contract/SheetMusicPageContract.java

@@ -2,6 +2,9 @@ package com.cooleshow.teacher.contract;
 
 import com.cooleshow.base.presenter.view.BaseView;
 import com.cooleshow.teacher.bean.HomePageSheetMusicListBean;
+import com.cooleshow.teacher.bean.QuerySubjectBean;
+
+import java.util.List;
 
 /**
  * Author by pq, Date on 2022/4/20.
@@ -12,6 +15,9 @@ public interface SheetMusicPageContract {
         void getSheetMusicListSuccess(int page, HomePageSheetMusicListBean sheetMusicListBean);
 
         void getSheetMusicListError(int page);
+
+        void querySubjectItemSuccess(List<QuerySubjectBean> data);
+
     }
 
     interface Presenter {

+ 29 - 11
teacher/src/main/java/com/cooleshow/teacher/presenter/homePage/SheetMusicPagePresenter.java

@@ -6,7 +6,9 @@ import com.cooleshow.base.rx.BaseObserver;
 import com.cooleshow.base.utils.RequestBodyUtil;
 import com.cooleshow.teacher.api.APIService;
 import com.cooleshow.teacher.bean.HomePageSheetMusicListBean;
+import com.cooleshow.teacher.bean.QuerySubjectBean;
 import com.cooleshow.teacher.bean.TeacherSelfStyleInfoBean;
+import com.cooleshow.teacher.bean.request.SheetMusicEntry;
 import com.cooleshow.teacher.contract.LiveCoursePageContract;
 import com.cooleshow.teacher.contract.SheetMusicPageContract;
 import com.cooleshow.usercenter.bean.UserInfo;
@@ -14,6 +16,8 @@ import com.cooleshow.usercenter.bean.UserInfo;
 import org.json.JSONException;
 import org.json.JSONObject;
 
+import java.util.List;
+
 /**
  * Author by pq, Date on 2022/4/20.
  */
@@ -40,20 +44,17 @@ public class SheetMusicPagePresenter extends BasePresenter<SheetMusicPageContrac
     /**
      * 老师个人主页->曲谱列表
      */
-    public void getSheetMusicList(boolean isShowLoading, int page) {
+    public void getSheetMusicList(boolean isShowLoading, int page, String idAndName, String subjectIds) {
         if (isShowLoading && getView() != null) {
             getView().showLoading();
         }
-        JSONObject jsonObject = new JSONObject();
-        try {
-            jsonObject.putOpt("auditStatus", SHEET_MUSIC_STATUS_PASS);//0:停用,1:启用
-            jsonObject.putOpt("page", page);
-            jsonObject.putOpt("rows", Constants.DEFAULT_DATA_SIZE);
-        } catch (JSONException e) {
-            e.printStackTrace();
-        }
-
-        addSubscribe(create(APIService.class).getSheetMusicList(RequestBodyUtil.convertToRequestBodyJson(jsonObject.toString())), new BaseObserver<HomePageSheetMusicListBean>(getView()) {
+        SheetMusicEntry entry = new SheetMusicEntry();
+        entry.idAndName = idAndName;
+        entry.subjectIds = subjectIds;
+        entry.auditStatus = SHEET_MUSIC_STATUS_PASS;
+        entry.page = page;
+        entry.rows = Constants.DEFAULT_DATA_SIZE;
+        addSubscribe(create(APIService.class).getSheetMusicList(entry), new BaseObserver<HomePageSheetMusicListBean>(getView()) {
             @Override
             protected void onSuccess(HomePageSheetMusicListBean data) {
                 if (getView() != null) {
@@ -70,4 +71,21 @@ public class SheetMusicPagePresenter extends BasePresenter<SheetMusicPageContrac
             }
         });
     }
+
+    public void querySubjectItem() {
+        addSubscribe(create(APIService.class).querySubjectItem(), new BaseObserver<List<QuerySubjectBean>>(getView()) {
+            @Override
+            protected void onSuccess(List<QuerySubjectBean> data) {
+                if (getView() != null) {
+                    getView().querySubjectItemSuccess(data);
+                }
+            }
+
+            @Override
+            public void onError(Throwable e) {
+                super.onError(e);
+
+            }
+        });
+    }
 }

+ 6 - 8
teacher/src/main/java/com/cooleshow/teacher/ui/comment/CourseCommentDetailActivity.java

@@ -22,6 +22,7 @@ import androidx.annotation.Nullable;
 
 /**
  * Author by pq, Date on 2022/5/5.
+ * 老师端-陪练课详情
  */
 @Route(path = RouterPath.CommentCenter.TEACHER_COURSE_COMMENT_DETAIL)
 public class CourseCommentDetailActivity extends BaseMVPActivity<ActivityCourseCommentDetailLayoutBinding, CourseCommentDetailPresenter> implements CourseCommentDetailContract.CourseCommentDetailView, View.OnClickListener {
@@ -83,14 +84,11 @@ public class CourseCommentDetailActivity extends BaseMVPActivity<ActivityCourseC
     private void showSetCommentDialog() {
         if (mSetCommentDialog == null) {
             mSetCommentDialog = new CourseSetCommentDialog(this);
-            mSetCommentDialog.setOnSubmitClickListener(new CourseSetCommentDialog.OnSubmitClickListener() {
-                @Override
-                public void onSubmit(String content, int type) {
-                    //提交
-                    viewBinding.tvTeacherAppraisalEmptyText.setVisibility(View.GONE);
-                    viewBinding.tvTeacherAppraisalContent.setVisibility(View.VISIBLE);
-                    viewBinding.tvTeacherAppraisalContent.setText(content);
-                }
+            mSetCommentDialog.setOnSubmitClickListener((content, type) -> {
+                //提交
+                viewBinding.tvTeacherAppraisalEmptyText.setVisibility(View.GONE);
+                viewBinding.tvTeacherAppraisalContent.setVisibility(View.VISIBLE);
+                viewBinding.tvTeacherAppraisalContent.setText(content);
             });
         }
         if (!mSetCommentDialog.isShowing()) {

+ 11 - 2
teacher/src/main/java/com/cooleshow/teacher/ui/course/SparringCourseDetailActivity.java

@@ -9,6 +9,7 @@ import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
 import com.cooleshow.base.utils.GlideUtils;
 import com.cooleshow.base.utils.SizeUtils;
+import com.cooleshow.base.utils.TimeUtils;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.widgets.VideoThumbnailView;
 import com.cooleshow.teacher.R;
@@ -95,8 +96,6 @@ public class SparringCourseDetailActivity extends BaseMVPActivity<ActivitySparri
         if (infoBean == null) {
             return;
         }
-        //时间
-        viewBinding.tvCourseTime.setText(infoBean.classDate);
         //学生头像
         GlideUtils.INSTANCE.loadImage(this, infoBean.studentAvatar, viewBinding.ivAvatar, R.drawable.icon_teacher_default_head);
         //title
@@ -104,6 +103,16 @@ public class SparringCourseDetailActivity extends BaseMVPActivity<ActivitySparri
         //subjectName
         viewBinding.tvCourseName.setText(infoBean.subjectName);
 
+        String startTime = TimeUtils.date2String(TimeUtils.getDate(infoBean.startTime), "yyyy-MM-dd");
+        String endTime = TimeUtils.date2String(TimeUtils.getDate(infoBean.endTime), "yyyy-MM-dd");
+        if (TextUtils.equals(startTime, endTime)) {
+            String startTimeText = TimeUtils.date2String(TimeUtils.getDate(infoBean.startTime), "HH:mm");
+            String endTimeText = TimeUtils.date2String(TimeUtils.getDate(infoBean.endTime), "HH:mm");
+            viewBinding.tvCourseTime.setText(startTime + " " + startTimeText + "-" + endTimeText);
+        } else {
+            viewBinding.tvCourseTime.setText(infoBean.startTime + "-" + infoBean.endTime);
+        }
+
         String status = infoBean.courseStatus;
         if (TextUtils.equals(CourseConstants.COURSE_STATUS_NOT_START, status)) {
             //课程未开始

+ 75 - 19
teacher/src/main/java/com/cooleshow/teacher/ui/homepage/SheetMusicPageFragment.java

@@ -8,9 +8,12 @@ import com.cooleshow.base.constanst.Constants;
 import com.cooleshow.base.ui.fragment.BaseMVPFragment;
 import com.cooleshow.base.utils.helper.WebStartHelper;
 import com.cooleshow.base.widgets.EmptyViewLayout;
+import com.cooleshow.base.widgets.poplist.PopMenuBean;
+import com.cooleshow.base.widgets.poplist.PopupListWindow;
 import com.cooleshow.teacher.R;
 import com.cooleshow.teacher.adapter.HomePageSheetMusicAdapter;
 import com.cooleshow.teacher.bean.HomePageSheetMusicListBean;
+import com.cooleshow.teacher.bean.QuerySubjectBean;
 import com.cooleshow.teacher.constants.TeacherInfoConstants;
 import com.cooleshow.teacher.contract.SheetMusicPageContract;
 import com.cooleshow.teacher.databinding.FragmentSheetMusicPageLayoutBinding;
@@ -21,6 +24,9 @@ import com.scwang.smart.refresh.layout.listener.OnRefreshListener;
 import androidx.annotation.NonNull;
 import androidx.recyclerview.widget.LinearLayoutManager;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * Author by pq, Date on 2022/5/9.
  * 老师个人主页->曲谱列表
@@ -33,36 +39,32 @@ public class SheetMusicPageFragment extends BaseMVPFragment<FragmentSheetMusicPa
     private EmptyViewLayout mEmptyView;
     private View mCertTipView;
     private String musicPersonCertStatus = TeacherInfoConstants.MUSICIAN_STATUS_UNPAALY;
+    private List<QuerySubjectBean> subjectBeanList = new ArrayList<>();
+    private int currentSubjectId = 0;
+    private String mIdNames;
 
     @Override
     protected void initView(View rootView) {
         mViewBinding.viewUploadBg.setOnClickListener(this);
+        presenter.querySubjectItem();
     }
 
     @Override
     protected void initData() {
         mAdapter = new HomePageSheetMusicAdapter(R.layout.item_home_page_sheet_music_layout);
-        mViewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
-            @Override
-            public void onRefresh(@NonNull RefreshLayout refreshLayout) {
-                currentPage = 1;
-                queryList(true);
-            }
+        mViewBinding.refreshLayout.setOnRefreshListener(refreshLayout -> {
+            currentPage = 1;
+            queryList(true);
         });
 
-        mAdapter.getLoadMoreModule().setOnLoadMoreListener(new OnLoadMoreListener() {
-            @Override
-            public void onLoadMore() {
-                //上拉加载
-                if (hasNext) {
-                    currentPage++;
-                    queryList(false);
-                } else {
-                    mAdapter.getLoadMoreModule().loadMoreEnd();
-                }
+        mAdapter.getLoadMoreModule().setOnLoadMoreListener(() -> {
+            //上拉加载
+            if (hasNext) {
+                currentPage++;
+                queryList(false);
+            } else {
+                mAdapter.getLoadMoreModule().loadMoreEnd();
             }
-
-
         });
         mViewBinding.recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
         mViewBinding.recyclerView.setAdapter(mAdapter);
@@ -81,6 +83,12 @@ public class SheetMusicPageFragment extends BaseMVPFragment<FragmentSheetMusicPa
         }
         if (TextUtils.equals(musicPersonCertStatus, TeacherInfoConstants.MUSICIAN_STATUS_PASS)) {
             mViewBinding.groupContent.setVisibility(View.VISIBLE);
+            mViewBinding.searchView.setOnLeftClickListener(v -> {
+                selectVocalPart();
+            });
+            mViewBinding.searchView.setOnSearchListener(v -> {
+                musicSearch();
+            });
             queryList(true);
             if (mCertTipView != null) {
                 mCertTipView.setVisibility(View.GONE);
@@ -96,8 +104,49 @@ public class SheetMusicPageFragment extends BaseMVPFragment<FragmentSheetMusicPa
         }
     }
 
+    /**
+     * 乐谱搜索
+     */
+    private void musicSearch() {
+        mIdNames = mViewBinding.searchView.getSearchEdit().getText().toString();
+        queryList(true);
+    }
+
+    /**
+     * 选择声部
+     */
+    private void selectVocalPart() {
+        if (subjectBeanList.size() == 0) {
+            subjectBeanList.add(new QuerySubjectBean("声部", 0));
+        }
+        List<PopMenuBean> popList = new ArrayList<>();
+        for (QuerySubjectBean bean : subjectBeanList) {
+            PopMenuBean popMenuBean = new PopMenuBean();
+            popMenuBean.setActionName(bean.name);
+            popList.add(popMenuBean);
+        }
+        initCoursePop(mViewBinding.searchView, popList, position -> {
+            QuerySubjectBean bean = subjectBeanList.get(position);
+            currentSubjectId = bean.id;
+            mViewBinding.searchView.getLeftText().setText(bean.name);
+            queryList(true);
+        });
+    }
+
+    /**
+     * 选择声部pop
+     *
+     * @param targetView
+     * @param popList
+     * @param listener
+     */
+    private void initCoursePop(View targetView, List<PopMenuBean> popList, PopupListWindow.PopupListListener listener) {
+        PopupListWindow popWindow = new PopupListWindow(getContext());
+        popWindow.showListPop(targetView, popList, position -> listener.onPopupListClick(position));
+    }
+
     private void queryList(boolean isShowLoading) {
-        presenter.getSheetMusicList(isShowLoading, currentPage);
+        presenter.getSheetMusicList(isShowLoading, currentPage, mIdNames, String.valueOf(currentSubjectId));
     }
 
     @Override
@@ -179,6 +228,13 @@ public class SheetMusicPageFragment extends BaseMVPFragment<FragmentSheetMusicPa
         }
     }
 
+    @Override
+    public void querySubjectItemSuccess(List<QuerySubjectBean> data) {
+        subjectBeanList.clear();
+        subjectBeanList.add(new QuerySubjectBean("声部", 0));
+        subjectBeanList.addAll(data);
+    }
+
     /**
      * 设置音乐人认证状态
      *

+ 11 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/main/HomeFragment.kt

@@ -1,5 +1,6 @@
 package com.cooleshow.teacher.ui.main
 
+import android.text.TextUtils
 import android.util.Log
 import android.view.View
 import com.alibaba.android.arouter.launcher.ARouter
@@ -8,6 +9,7 @@ import com.cooleshow.base.ext.setVisible
 import com.cooleshow.base.router.RouterPath
 import com.cooleshow.base.ui.fragment.BaseMVPFragment
 import com.cooleshow.base.utils.GlideUtils.loadImage
+import com.cooleshow.base.utils.TimeUtils
 import com.cooleshow.base.utils.Utils
 import com.cooleshow.teacher.R
 import com.cooleshow.teacher.bean.*
@@ -17,6 +19,7 @@ import com.cooleshow.teacher.databinding.FragmentHomeLayoutBinding
 import com.cooleshow.teacher.presenter.main.HomePresenter
 import com.cooleshow.teacher.ui.course.SparringCourseDetailActivity
 import com.cooleshow.usercenter.helper.UserHelper
+import java.util.*
 
 
 /**
@@ -251,6 +254,14 @@ class HomeFragment : BaseMVPFragment<FragmentHomeLayoutBinding, HomePresenter>()
         if(recentCourses != null){
             mViewBinding.tvLiveTitle.setText(recentCourses.courseGroupName)
             mViewBinding.tvLiveTime.setText(recentCourses.courseStartTime)
+            val currentTime = TimeUtils.date2String(Date(System.currentTimeMillis()), "yyyy-MM-dd")
+            val startTime = TimeUtils.date2String(TimeUtils.getDate(recentCourses.courseStartTime), "yyyy-MM-dd")
+            if (TextUtils.equals(currentTime, startTime)) {
+                val timeText = TimeUtils.date2String(TimeUtils.getDate(recentCourses.courseStartTime), "HH:mm")
+                mViewBinding.tvLiveTime.text = "今日 $timeText"
+            } else {
+                mViewBinding.tvLiveTime.text = TimeUtils.date2String(TimeUtils.getDate(recentCourses.courseStartTime), "yyyy-MM-dd HH:mm")
+            }
             mViewBinding.tvGoLive.setOnClickListener { v ->
                 //进入直播
                 ARouter.getInstance().build(RouterPath.CourseCenter.SPARRING_COURSE_DETAIL)

+ 6 - 6
teacher/src/main/java/com/cooleshow/teacher/ui/mine/FeedBackActivity.java

@@ -37,15 +37,15 @@ public class FeedBackActivity extends BaseMVPActivity<ActivityFeedbackBinding, F
                     ToastUtils.showShort("请输入您的反馈意见");
                     break;
                 }
-                String mobileNo = viewBinding.etConnect.getText().toString().trim();
-                if (TextUtils.isEmpty(mobileNo)){
-                    ToastUtils.showShort("请输入您的邮箱或手机号");
-                    break;
-                }
+//                String mobileNo = viewBinding.etConnect.getText().toString().trim();
+//                if (TextUtils.isEmpty(mobileNo)){
+//                    ToastUtils.showShort("请输入您的邮箱或手机号");
+//                    break;
+//                }
                 JSONObject jsonObject = new JSONObject();
                 try {
                     jsonObject.putOpt("content", content);
-                    jsonObject.putOpt("mobileNo", mobileNo);
+//                    jsonObject.putOpt("mobileNo", mobileNo);
                 } catch (JSONException e) {
                     e.printStackTrace();
                 }

+ 91 - 0
teacher/src/main/java/com/cooleshow/teacher/widgets/CourseSearchView.java

@@ -0,0 +1,91 @@
+package com.cooleshow.teacher.widgets;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.EditText;
+import android.widget.FrameLayout;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.cooleshow.teacher.R;
+
+/**
+ * @author dengqw
+ * @time 2022/6/30 18:37
+ * @describe:
+ **/
+public class CourseSearchView extends FrameLayout {
+
+    private TextView mTvAgency;
+    private EditText mSearchEdit;
+    private TextView mSearchBtn;
+    private String mLeftSearchText;
+    private String mSearchHintText;
+    private String mSearchBtnText;
+
+    public CourseSearchView(@NonNull Context context) {
+        this(context, null);
+    }
+
+    public CourseSearchView(@NonNull Context context, @Nullable AttributeSet attrs) {
+        this(context, attrs, -1);
+    }
+
+    public CourseSearchView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+        TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.course_search_style);
+        mLeftSearchText = array.getString(R.styleable.course_search_style_left_search_text);
+        mSearchHintText = array.getString(R.styleable.course_search_style_search_edit_hint);
+        mSearchBtnText = array.getString(R.styleable.course_search_style_search_btn_text);
+        array.recycle();
+
+        initView();
+    }
+
+    private void initView() {
+        View view = View.inflate(getContext(), R.layout.course_search_view, this);
+        mTvAgency = view.findViewById(R.id.tv_agency);
+        mSearchEdit = view.findViewById(R.id.search_edit);
+        mSearchBtn = view.findViewById(R.id.search_btn);
+
+        setLeftText(mLeftSearchText);
+        setSearchHint(mSearchHintText);
+        setBtnText(mSearchBtnText);
+    }
+
+    public void setLeftText(String text) {
+        mTvAgency.setText(text);
+    }
+
+    public void setSearchHint(String hintText) {
+        mSearchEdit.setHint(hintText);
+    }
+
+    public void setBtnText(String btnText) {
+        mSearchBtn.setHint(btnText);
+    }
+
+    public TextView getLeftText() {
+        return mTvAgency;
+    }
+
+    public EditText getSearchEdit() {
+        return mSearchEdit;
+    }
+
+    public TextView getSearchBtn() {
+        return mSearchBtn;
+    }
+
+    public void setOnSearchListener(View.OnClickListener listener) {
+        mSearchBtn.setOnClickListener(listener);
+    }
+
+    public void setOnLeftClickListener(View.OnClickListener listener) {
+        mTvAgency.setOnClickListener(listener);
+    }
+}

+ 1 - 0
teacher/src/main/res/layout/activity_feedback.xml

@@ -44,6 +44,7 @@
         android:paddingTop="14dp"
         android:paddingRight="12dp"
         android:paddingBottom="14dp"
+        android:visibility="gone"
         android:textColor="@color/black_333"
         android:textColorHint="@color/color_999999"
         android:textSize="@dimen/sp_16" />

+ 8 - 7
teacher/src/main/res/layout/activity_home_page_layout.xml

@@ -93,13 +93,13 @@
 
     <LinearLayout
         android:id="@+id/ll_subject_container"
-        android:layout_width="match_parent"
+        android:layout_width="0dp"
         android:layout_height="wrap_content"
         android:layout_marginTop="8dp"
-        android:orientation="horizontal"
-        android:layout_marginLeft="@dimen/dp_80"
         android:layout_marginRight="@dimen/dp_30"
+        android:orientation="horizontal"
         app:layout_constraintLeft_toLeftOf="@+id/tv_nickname"
+        app:layout_constraintRight_toRightOf="@+id/view_top_bg"
         app:layout_constraintTop_toBottomOf="@+id/tv_nickname" />
 
     <RatingBar
@@ -108,22 +108,23 @@
         android:layout_width="wrap_content"
         android:layout_height="19dp"
         android:layout_marginTop="20dp"
+        android:isIndicator="true"
         android:numStars="5"
         android:rating="0"
-        android:isIndicator="true"
         android:stepSize="1"
         app:layout_constraintLeft_toLeftOf="@+id/iv_avatar"
         app:layout_constraintTop_toBottomOf="@+id/iv_avatar" />
+
     <TextView
         android:id="@+id/tv_no_score"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:textSize="@dimen/sp_13"
         android:layout_marginTop="20dp"
+        android:text="暂无评分"
+        android:textSize="@dimen/sp_13"
         android:visibility="gone"
         app:layout_constraintLeft_toLeftOf="@+id/iv_avatar"
-        app:layout_constraintTop_toBottomOf="@+id/iv_avatar"
-        android:text="暂无评分"/>
+        app:layout_constraintTop_toBottomOf="@+id/iv_avatar" />
 
     <LinearLayout
         android:id="@+id/ll_fans"

+ 70 - 0
teacher/src/main/res/layout/course_search_view.xml

@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout 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="wrap_content">
+
+    <TextView
+        android:id="@+id/tv_agency"
+        android:layout_width="wrap_content"
+        android:layout_height="0dp"
+        android:drawableRight="@drawable/icon_arrow_down"
+        android:drawablePadding="6dp"
+        android:layout_marginLeft="@dimen/dp_17"
+        android:gravity="center"
+        android:includeFontPadding="false"
+        android:text="声部"
+        android:textColor="@color/color_666666"
+        android:textSize="@dimen/sp_14"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintBottom_toBottomOf="@+id/search_view"
+        app:layout_constraintTop_toTopOf="@+id/search_view" />
+
+    <View
+        android:id="@+id/search_view"
+        android:layout_width="@dimen/dp_280"
+        android:layout_height="@dimen/dp_36"
+        android:layout_marginRight="@dimen/dp_14"
+        android:background="@drawable/bg_white_18dp"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <ImageView
+        android:id="@+id/iv_search_icon"
+        android:layout_width="@dimen/dp_16"
+        android:layout_height="@dimen/dp_16"
+        android:layout_marginLeft="@dimen/dp_17"
+        android:src="@mipmap/small_search_icon"
+        app:layout_constraintBottom_toBottomOf="@+id/search_view"
+        app:layout_constraintLeft_toLeftOf="@+id/search_view"
+        app:layout_constraintTop_toTopOf="@+id/search_view" />
+
+    <EditText
+        android:id="@+id/search_edit"
+        android:layout_width="0dp"
+        android:layout_height="@dimen/dp_36"
+        android:background="@color/transparent"
+        android:hint="请输入曲目名称"
+        android:paddingLeft="@dimen/dp_41"
+        android:textColor="@color/color_333333"
+        android:textColorHint="@color/color_999999"
+        android:textSize="@dimen/sp_13"
+        app:layout_constraintLeft_toLeftOf="@+id/search_view"
+        app:layout_constraintRight_toLeftOf="@+id/search_btn"
+        app:layout_constraintTop_toTopOf="@+id/search_view" />
+
+    <TextView
+        android:id="@+id/search_btn"
+        android:layout_width="@dimen/dp_56"
+        android:layout_height="@dimen/dp_28"
+        android:layout_marginRight="@dimen/dp_4"
+        android:background="@drawable/shape_click_btn"
+        android:gravity="center"
+        android:text="@string/search"
+        android:textColor="@color/white"
+        android:textSize="@dimen/sp_14"
+        app:layout_constraintBottom_toBottomOf="@+id/search_view"
+        app:layout_constraintRight_toRightOf="@id/search_view"
+        app:layout_constraintTop_toTopOf="@+id/search_view" />
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 16 - 5
teacher/src/main/res/layout/fragment_sheet_music_page_layout.xml

@@ -3,18 +3,27 @@
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:paddingStart="14dp"
-    android:paddingTop="14dp"
-    android:paddingEnd="14dp">
+    android:paddingTop="14dp">
+
+    <com.cooleshow.teacher.widgets.CourseSearchView
+        android:id="@+id/search_view"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        app:layout_constraintTop_toTopOf="parent"
+        app:left_search_text="声部"
+        app:search_edit_hint="请输入曲目名称" />
 
     <View
         android:id="@+id/view_upload_bg"
         android:layout_width="match_parent"
         android:layout_height="40dp"
+        android:layout_marginStart="@dimen/dp_14"
+        android:layout_marginTop="@dimen/dp_15"
+        android:layout_marginEnd="@dimen/dp_14"
         android:background="@drawable/bg_white_10dp_border_e5e5e5"
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintRight_toRightOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
+        app:layout_constraintTop_toBottomOf="@+id/search_view" />
 
     <TextView
         android:id="@+id/tv_upload_sheet_music"
@@ -55,6 +64,8 @@
             android:id="@+id/recyclerView"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
+            android:layout_marginStart="@dimen/dp_14"
+            android:layout_marginRight="@dimen/dp_14"
             android:overScrollMode="never"
             android:scrollbars="none" />
     </com.scwang.smart.refresh.layout.SmartRefreshLayout>
@@ -64,7 +75,7 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:visibility="gone"
-        app:constraint_referenced_ids="refreshLayout,view_upload_bg,iv_icon_upload,tv_upload_sheet_music,view_upload_bg" />
+        app:constraint_referenced_ids="search_view,refreshLayout,view_upload_bg,iv_icon_upload,tv_upload_sheet_music,view_upload_bg" />
 
     <ViewStub
         android:id="@+id/vs_no_cert"

BIN
teacher/src/main/res/mipmap-xhdpi/small_search_icon.png


BIN
teacher/src/main/res/mipmap-xxhdpi/small_search_icon.png


BIN
teacher/src/main/res/mipmap-xxxhdpi/small_search_icon.png


+ 1 - 0
teacher/src/main/res/values/strings.xml

@@ -46,4 +46,5 @@
     <string name="goto_upload">去上传</string>
     <string name="goto_create">去创建</string>
     <string name="confirm_unbind">确认解绑</string>
+    <string name="search">搜索</string>
 </resources>

+ 6 - 0
teacher/src/main/res/values/styles.xml

@@ -87,4 +87,10 @@
         <attr name="empty_text" format="string" />
         <attr name="ope_btn" format="string" />
     </declare-styleable>
+
+    <declare-styleable name="course_search_style">
+        <attr name="left_search_text" format="string" />
+        <attr name="search_edit_hint" format="string" />
+        <attr name="search_btn_text" format="string" />
+    </declare-styleable>
 </resources>