diff --git a/switchdatetime/src/main/java/com/kunzisoft/switchdatetime/SwitchDateTimeDialogFragment.java b/switchdatetime/src/main/java/com/kunzisoft/switchdatetime/SwitchDateTimeDialogFragment.java index 6255cce6915d5c48c579932a3b214bf39be17c23..30d4b7f7c8fb0ca8f6c16d67047885667bad9515 100644 --- a/switchdatetime/src/main/java/com/kunzisoft/switchdatetime/SwitchDateTimeDialogFragment.java +++ b/switchdatetime/src/main/java/com/kunzisoft/switchdatetime/SwitchDateTimeDialogFragment.java @@ -3,6 +3,7 @@ package com.kunzisoft.switchdatetime; import com.kunzisoft.switchdatetime.date.OnYearSelectedListener; import com.kunzisoft.switchdatetime.date.widget.ListPickerYearView; import com.kunzisoft.switchdatetime.event.MessageEvent; +import com.kunzisoft.switchdatetime.provider.CalendarProvider; import com.kunzisoft.switchdatetime.provider.PageProvider; import com.kunzisoft.switchdatetime.time.RadialPickerLayout; import com.kunzisoft.switchdatetime.time.SwitchTimePicker; @@ -15,7 +16,6 @@ import ohos.agp.components.*; import ohos.agp.components.element.ShapeElement; import ohos.agp.utils.Color; import ohos.agp.utils.LayoutAlignment; -import ohos.agp.utils.TextTool; import ohos.agp.window.dialog.CommonDialog; import ohos.agp.window.service.Display; import ohos.agp.window.service.DisplayManager; @@ -91,6 +91,8 @@ public class SwitchDateTimeDialogFragment extends CommonDialog { private Component dateTimeLayout; private String mouthArr[]; + + private List mAdapters = new ArrayList<>(); /** * 当前系统语言是否是中文 */ @@ -325,12 +327,12 @@ public class SwitchDateTimeDialogFragment extends CommonDialog { // Init headers yearHeaderValues.setText(yearSimpleDate.format(dateTimeCalendar.getTime())); - if (isLaChina){ + if (isLaChina) { monthAndDayHeaderValues.setText(dayAndMonthSimpleDate.format(dateTimeCalendar.getTime())); } else { String day; if (mTimeDataSave.getInt("day", 1) < 10) { - day = " 0"+ mTimeDataSave.getInt("day", 1); + day = " 0" + mTimeDataSave.getInt("day", 1); } else { day = " " + mTimeDataSave.getInt("day", 1); } @@ -412,7 +414,7 @@ public class SwitchDateTimeDialogFragment extends CommonDialog { } }); - if (startAtPosition != UNDEFINED_POSITION){ + if (startAtPosition != UNDEFINED_POSITION) { viewSwitcher.setCurrentIndex(startAtPosition); if (viewSwitcher.getCurrentIndex() == 0) { ((RadialPickerLayout) ((DirectionalLayout) viewSwitcher.getCurrentComponent()).getComponentAt(0)).refresh(); @@ -439,7 +441,7 @@ public class SwitchDateTimeDialogFragment extends CommonDialog { } }); pageSlider = (PageSlider) dateTimeLayout.findComponentById(ResourceTable.Id_pageslider); - pageProvider = new PageProvider(mContext, calendar); + pageProvider = new PageProvider(mContext, calendar, initViews(calendar), mAdapters); pageSlider.setProvider(pageProvider); pageSlider.addPageChangedListener(new PageSlider.PageChangedListener() { @Override @@ -467,6 +469,30 @@ public class SwitchDateTimeDialogFragment extends CommonDialog { setMonth(); } + private List initViews(Calendar original_calendar) { + List views = new ArrayList<>(); + mAdapters.clear(); + for (int i = 0; i < 3; i++) { + DirectionalLayout rootLayout = (DirectionalLayout) LayoutScatter.getInstance(mContext) + .parse(ResourceTable.Layout_pagerslide_item, null, false); + Calendar calendar = PageProvider.calculateDate(original_calendar, i); + ListContainer listContainer = (ListContainer) rootLayout.findComponentById(ResourceTable.Id_listcontainer); + TableLayoutManager tableLayoutManager = new TableLayoutManager(); + tableLayoutManager.setColumnCount(7); + tableLayoutManager.setRowCount(7); + tableLayoutManager.setOrientation(Component.HORIZONTAL); + listContainer.setLayoutManager(tableLayoutManager); + + CalendarProvider calendarAdapter = new CalendarProvider(mContext, calendar); + mAdapters.add(calendarAdapter); + + listContainer.setItemProvider(calendarAdapter); + views.add(rootLayout); + } + + return views; + } + /** * 设置月份 */ @@ -540,14 +566,14 @@ public class SwitchDateTimeDialogFragment extends CommonDialog { // text_month.setText(s); setTextMonthAnimator(s); MessageEvent.month = mon; - System.out.println("-->>setMonth.MessageEvent.month= "+MessageEvent.month); + System.out.println("-->>setMonth.MessageEvent.month= " + MessageEvent.month); MessageEvent.year = String.valueOf(year); } - private void setTextMonthAnimator(String s){ - if (!text_month.getText().isEmpty() &&!text_month.getText().equals(s)){ + private void setTextMonthAnimator(String s) { + if (!text_month.getText().isEmpty() && !text_month.getText().equals(s)) { - if (animatorGroup != null && animatorGroup.isRunning()){ + if (animatorGroup != null && animatorGroup.isRunning()) { text_month.setText(s); text_month.setAlpha(1.0f); return; @@ -614,11 +640,11 @@ public class SwitchDateTimeDialogFragment extends CommonDialog { @Subscribe(threadMode = ThreadMode.MAIN) public void onMessageEvent(MessageEvent messageEvent) { - System.out.println("-->>onMessageEvent = "+MessageEvent.month); + System.out.println("-->>onMessageEvent = " + MessageEvent.month); if (Integer.valueOf(messageEvent.getDay()) < 10) { monthAndDayHeaderValues.setText(MessageEvent.month + " 0" + messageEvent.getDay()); } else { - monthAndDayHeaderValues.setText(MessageEvent.month +" "+ messageEvent.getDay()); + monthAndDayHeaderValues.setText(MessageEvent.month + " " + messageEvent.getDay()); } yearHeaderValues.setText(MessageEvent.year); diff --git a/switchdatetime/src/main/java/com/kunzisoft/switchdatetime/provider/CalendarProvider.java b/switchdatetime/src/main/java/com/kunzisoft/switchdatetime/provider/CalendarProvider.java index 5a568e0c9164a036671a32a768b3b8487a0841f5..89afe524421a32adfaa4e9989871150ec09c44d5 100644 --- a/switchdatetime/src/main/java/com/kunzisoft/switchdatetime/provider/CalendarProvider.java +++ b/switchdatetime/src/main/java/com/kunzisoft/switchdatetime/provider/CalendarProvider.java @@ -32,6 +32,7 @@ import java.util.Calendar; public class CalendarProvider extends BaseItemProvider { + private Preferences mSelDatePreference; private Context context; private Calendar calendar; private int current_month = 0; @@ -58,6 +59,18 @@ public class CalendarProvider extends BaseItemProvider { */ public CalendarProvider(Context context, Calendar calendar) { this.context = context; + + upData(calendar); + + // 获取保存的手机横竖屏情况(true - 竖屏;false - 横屏) + DatabaseHelper databaseHelper = new DatabaseHelper(context); + Preferences orientation = databaseHelper.getPreferences("ori_pref"); + isOrientation = orientation.getBoolean("orientation", true); + + mSelDatePreference = databaseHelper.getPreferences("sel_date"); + } + + public void upData(Calendar calendar){ this.calendar = calendar; original_year = calendar.get(Calendar.YEAR); original_month = calendar.get(Calendar.MONTH); @@ -66,13 +79,6 @@ public class CalendarProvider extends BaseItemProvider { int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); firstWeekOffset = Calendar.SATURDAY - dayOfWeek + 1; offset = firstWeekOffset - 7; - -// System.out.println("-->>CalendarProvider."+original_year+"--"+original_month+"--"+original_day); - - // 获取保存的手机横竖屏情况(true - 竖屏;false - 横屏) - DatabaseHelper databaseHelper = new DatabaseHelper(context); - Preferences orientation = databaseHelper.getPreferences("ori_pref"); - isOrientation = orientation.getBoolean("orientation", true); } @Override @@ -104,6 +110,9 @@ public class CalendarProvider extends BaseItemProvider { component = LayoutScatter.getInstance(context) .parse(xmlId, null, false); viewHolder = new ViewHolder(); + viewHolder.item_root = (DependentLayout) component.findComponentById(ResourceTable.Id_item_root); + viewHolder.item_text = (Text) component.findComponentById(ResourceTable.Id_item_text); + viewHolder.item_background = (Image) component.findComponentById(ResourceTable.Id_item_background); component.setTag(viewHolder); } else { if (component.getTag() instanceof ViewHolder) { @@ -111,10 +120,18 @@ public class CalendarProvider extends BaseItemProvider { } } if (viewHolder != null) { - viewHolder.item_root = (DependentLayout) component.findComponentById(ResourceTable.Id_item_root); - viewHolder.item_text = (Text) component.findComponentById(ResourceTable.Id_item_text); - viewHolder.item_background = (Image) component.findComponentById(ResourceTable.Id_item_background); setData(position, viewHolder); + +// int year1 = mSelDatePreference.getInt("year",0); +// int month1 = mSelDatePreference.getInt("month", 0); +// int day1 = mSelDatePreference.getInt("day", 0); +// +// if (position >= 7 && year1 != 0 && month1 != 0 && day1 != 0 && year1 == year && (month1) == (Utils.month+1) +// && day1 == Integer.valueOf(viewHolder.item_text.getText())){ +// viewHolder.item_background.setVisibility(Component.VISIBLE); +// } else { +// viewHolder.item_background.setVisibility(Component.HIDE); +// } viewHolder.item_root.setClickedListener(new Component.ClickedListener() { @Override public void onClick(Component component) { @@ -125,13 +142,18 @@ public class CalendarProvider extends BaseItemProvider { if (lastview == null) { lastview = (DependentLayout) component; } - clearBackground(lastview); +// clearBackground(lastview); Image image = (Image) component.findComponentById(ResourceTable.Id_item_background); image.setVisibility(Component.VISIBLE); Text item_text = (Text) component.findComponentById(ResourceTable.Id_item_text); item_text.setTextColor(Color.WHITE); lastview = (DependentLayout) component; EventBus.getDefault().post(new MessageEvent(item_text.getText())); + + mSelDatePreference.putInt("year", year); + mSelDatePreference.putInt("month", month); + mSelDatePreference.putInt("day",Integer.valueOf(item_text.getText())); + mSelDatePreference.flushSync(); } }); } diff --git a/switchdatetime/src/main/java/com/kunzisoft/switchdatetime/provider/PageProvider.java b/switchdatetime/src/main/java/com/kunzisoft/switchdatetime/provider/PageProvider.java index e46802caf09f0c39b999b5256bffe4ccf94364e9..ab50d39db9eacd4b531aba10ce9a002c9ef5b371 100644 --- a/switchdatetime/src/main/java/com/kunzisoft/switchdatetime/provider/PageProvider.java +++ b/switchdatetime/src/main/java/com/kunzisoft/switchdatetime/provider/PageProvider.java @@ -15,25 +15,33 @@ package com.kunzisoft.switchdatetime.provider; -import com.kunzisoft.switchdatetime.ResourceTable; - -import ohos.agp.components.*; +import ohos.agp.components.Component; +import ohos.agp.components.ComponentContainer; +import ohos.agp.components.DirectionalLayout; +import ohos.agp.components.PageSliderProvider; import ohos.app.Context; import java.util.Calendar; +import java.util.List; public class PageProvider extends PageSliderProvider { private Context mContext; private Calendar original_calendar; + private List mViews; + + private List mAdapters; + /** * constructor * * @param context context */ - public PageProvider(Context context, Calendar calendar) { + public PageProvider(Context context, Calendar calendar, List views, List adapters) { mContext = context; original_calendar = calendar; + mViews = views; + mAdapters = adapters; } @Override @@ -43,20 +51,16 @@ public class PageProvider extends PageSliderProvider { @Override public Object createPageInContainer(ComponentContainer componentContainer, int i) { - DirectionalLayout rootLayout = (DirectionalLayout) LayoutScatter.getInstance(mContext) - .parse(ResourceTable.Layout_pagerslide_item, null, false); - Calendar calendar = calculateDate(i); - ListContainer listContainer = (ListContainer) rootLayout.findComponentById(ResourceTable.Id_listcontainer); - TableLayoutManager tableLayoutManager = new TableLayoutManager(); - tableLayoutManager.setColumnCount(7); - tableLayoutManager.setRowCount(7); - tableLayoutManager.setOrientation(Component.HORIZONTAL); - listContainer.setLayoutManager(tableLayoutManager); - - CalendarProvider calendarAdapter = new CalendarProvider(mContext, calendar); + int index = i % mViews.size(); + DirectionalLayout rootLayout = (DirectionalLayout) mViews.get(index); + if (componentContainer.getChildIndex(rootLayout) != -1) { + componentContainer.removeComponent(rootLayout); + } + mAdapters.get(index).upData(calculateDate(original_calendar, i)); + mAdapters.get(index).notifyDataChanged(); - listContainer.setItemProvider(calendarAdapter); componentContainer.addComponent(rootLayout); + return rootLayout; } @@ -71,7 +75,7 @@ public class PageProvider extends PageSliderProvider { return false; } - private Calendar calculateDate(int monthOffset) { + public static Calendar calculateDate(Calendar original_calendar, int monthOffset) { Calendar calendar = Calendar.getInstance(); int year = original_calendar.get(Calendar.YEAR); int month = original_calendar.get(Calendar.MONTH);