@ -0,0 +1,2 @@
|
||||
#Wed May 31 02:42:33 CST 2023
|
||||
gradle.version=7.5
|
@ -0,0 +1,414 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DBNavigator.Project.DataEditorManager">
|
||||
<record-view-column-sorting-type value="BY_INDEX" />
|
||||
<value-preview-text-wrapping value="true" />
|
||||
<value-preview-pinned value="false" />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.DatabaseEditorStateManager">
|
||||
<last-used-providers />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.DatabaseFileManager">
|
||||
<open-files />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.Settings">
|
||||
<connections />
|
||||
<browser-settings>
|
||||
<general>
|
||||
<display-mode value="TABBED" />
|
||||
<navigation-history-size value="100" />
|
||||
<show-object-details value="false" />
|
||||
</general>
|
||||
<filters>
|
||||
<object-type-filter>
|
||||
<object-type name="SCHEMA" enabled="true" />
|
||||
<object-type name="USER" enabled="true" />
|
||||
<object-type name="ROLE" enabled="true" />
|
||||
<object-type name="PRIVILEGE" enabled="true" />
|
||||
<object-type name="CHARSET" enabled="true" />
|
||||
<object-type name="TABLE" enabled="true" />
|
||||
<object-type name="VIEW" enabled="true" />
|
||||
<object-type name="MATERIALIZED_VIEW" enabled="true" />
|
||||
<object-type name="NESTED_TABLE" enabled="true" />
|
||||
<object-type name="COLUMN" enabled="true" />
|
||||
<object-type name="INDEX" enabled="true" />
|
||||
<object-type name="CONSTRAINT" enabled="true" />
|
||||
<object-type name="DATASET_TRIGGER" enabled="true" />
|
||||
<object-type name="DATABASE_TRIGGER" enabled="true" />
|
||||
<object-type name="SYNONYM" enabled="true" />
|
||||
<object-type name="SEQUENCE" enabled="true" />
|
||||
<object-type name="PROCEDURE" enabled="true" />
|
||||
<object-type name="FUNCTION" enabled="true" />
|
||||
<object-type name="PACKAGE" enabled="true" />
|
||||
<object-type name="TYPE" enabled="true" />
|
||||
<object-type name="TYPE_ATTRIBUTE" enabled="true" />
|
||||
<object-type name="ARGUMENT" enabled="true" />
|
||||
<object-type name="DIMENSION" enabled="true" />
|
||||
<object-type name="CLUSTER" enabled="true" />
|
||||
<object-type name="DBLINK" enabled="true" />
|
||||
</object-type-filter>
|
||||
</filters>
|
||||
<sorting>
|
||||
<object-type name="COLUMN" sorting-type="NAME" />
|
||||
<object-type name="FUNCTION" sorting-type="NAME" />
|
||||
<object-type name="PROCEDURE" sorting-type="NAME" />
|
||||
<object-type name="ARGUMENT" sorting-type="POSITION" />
|
||||
<object-type name="TYPE ATTRIBUTE" sorting-type="POSITION" />
|
||||
</sorting>
|
||||
<default-editors>
|
||||
<object-type name="VIEW" editor-type="SELECTION" />
|
||||
<object-type name="PACKAGE" editor-type="SELECTION" />
|
||||
<object-type name="TYPE" editor-type="SELECTION" />
|
||||
</default-editors>
|
||||
</browser-settings>
|
||||
<navigation-settings>
|
||||
<lookup-filters>
|
||||
<lookup-objects>
|
||||
<object-type name="SCHEMA" enabled="true" />
|
||||
<object-type name="USER" enabled="false" />
|
||||
<object-type name="ROLE" enabled="false" />
|
||||
<object-type name="PRIVILEGE" enabled="false" />
|
||||
<object-type name="CHARSET" enabled="false" />
|
||||
<object-type name="TABLE" enabled="true" />
|
||||
<object-type name="VIEW" enabled="true" />
|
||||
<object-type name="MATERIALIZED VIEW" enabled="true" />
|
||||
<object-type name="INDEX" enabled="true" />
|
||||
<object-type name="CONSTRAINT" enabled="true" />
|
||||
<object-type name="DATASET TRIGGER" enabled="true" />
|
||||
<object-type name="DATABASE TRIGGER" enabled="true" />
|
||||
<object-type name="SYNONYM" enabled="false" />
|
||||
<object-type name="SEQUENCE" enabled="true" />
|
||||
<object-type name="PROCEDURE" enabled="true" />
|
||||
<object-type name="FUNCTION" enabled="true" />
|
||||
<object-type name="PACKAGE" enabled="true" />
|
||||
<object-type name="TYPE" enabled="true" />
|
||||
<object-type name="DIMENSION" enabled="false" />
|
||||
<object-type name="CLUSTER" enabled="false" />
|
||||
<object-type name="DBLINK" enabled="true" />
|
||||
</lookup-objects>
|
||||
<force-database-load value="false" />
|
||||
<prompt-connection-selection value="true" />
|
||||
<prompt-schema-selection value="true" />
|
||||
</lookup-filters>
|
||||
</navigation-settings>
|
||||
<dataset-grid-settings>
|
||||
<general>
|
||||
<enable-zooming value="true" />
|
||||
<enable-column-tooltip value="true" />
|
||||
</general>
|
||||
<sorting>
|
||||
<nulls-first value="true" />
|
||||
<max-sorting-columns value="4" />
|
||||
</sorting>
|
||||
<audit-columns>
|
||||
<column-names value="" />
|
||||
<visible value="true" />
|
||||
<editable value="false" />
|
||||
</audit-columns>
|
||||
</dataset-grid-settings>
|
||||
<dataset-editor-settings>
|
||||
<text-editor-popup>
|
||||
<active value="false" />
|
||||
<active-if-empty value="false" />
|
||||
<data-length-threshold value="100" />
|
||||
<popup-delay value="1000" />
|
||||
</text-editor-popup>
|
||||
<values-actions-popup>
|
||||
<show-popup-button value="true" />
|
||||
<element-count-threshold value="1000" />
|
||||
<data-length-threshold value="250" />
|
||||
</values-actions-popup>
|
||||
<general>
|
||||
<fetch-block-size value="100" />
|
||||
<fetch-timeout value="30" />
|
||||
<trim-whitespaces value="true" />
|
||||
<convert-empty-strings-to-null value="true" />
|
||||
<select-content-on-cell-edit value="true" />
|
||||
<large-value-preview-active value="true" />
|
||||
</general>
|
||||
<filters>
|
||||
<prompt-filter-dialog value="true" />
|
||||
<default-filter-type value="BASIC" />
|
||||
</filters>
|
||||
<qualified-text-editor text-length-threshold="300">
|
||||
<content-types>
|
||||
<content-type name="Text" enabled="true" />
|
||||
<content-type name="Properties" enabled="true" />
|
||||
<content-type name="XML" enabled="true" />
|
||||
<content-type name="DTD" enabled="true" />
|
||||
<content-type name="HTML" enabled="true" />
|
||||
<content-type name="XHTML" enabled="true" />
|
||||
<content-type name="Java" enabled="true" />
|
||||
<content-type name="SQL" enabled="true" />
|
||||
<content-type name="PL/SQL" enabled="true" />
|
||||
<content-type name="JSON" enabled="true" />
|
||||
<content-type name="JSON5" enabled="true" />
|
||||
<content-type name="Groovy" enabled="true" />
|
||||
<content-type name="AIDL" enabled="true" />
|
||||
<content-type name="YAML" enabled="true" />
|
||||
<content-type name="Manifest" enabled="true" />
|
||||
</content-types>
|
||||
</qualified-text-editor>
|
||||
<record-navigation>
|
||||
<navigation-target value="VIEWER" />
|
||||
</record-navigation>
|
||||
</dataset-editor-settings>
|
||||
<code-editor-settings>
|
||||
<general>
|
||||
<show-object-navigation-gutter value="false" />
|
||||
<show-spec-declaration-navigation-gutter value="true" />
|
||||
<enable-spellchecking value="true" />
|
||||
<enable-reference-spellchecking value="false" />
|
||||
</general>
|
||||
<confirmations>
|
||||
<save-changes value="false" />
|
||||
<revert-changes value="true" />
|
||||
</confirmations>
|
||||
</code-editor-settings>
|
||||
<code-completion-settings>
|
||||
<filters>
|
||||
<basic-filter>
|
||||
<filter-element type="RESERVED_WORD" id="keyword" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="function" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="parameter" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="datatype" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="exception" selected="true" />
|
||||
<filter-element type="OBJECT" id="schema" selected="true" />
|
||||
<filter-element type="OBJECT" id="role" selected="true" />
|
||||
<filter-element type="OBJECT" id="user" selected="true" />
|
||||
<filter-element type="OBJECT" id="privilege" selected="true" />
|
||||
<user-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="true" />
|
||||
<filter-element type="OBJECT" id="view" selected="true" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||
<filter-element type="OBJECT" id="index" selected="true" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="false" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||
<filter-element type="OBJECT" id="function" selected="true" />
|
||||
<filter-element type="OBJECT" id="package" selected="true" />
|
||||
<filter-element type="OBJECT" id="type" selected="true" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||
</user-schema>
|
||||
<public-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="false" />
|
||||
<filter-element type="OBJECT" id="view" selected="false" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="false" />
|
||||
<filter-element type="OBJECT" id="index" selected="false" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="false" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="false" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="false" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="false" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="false" />
|
||||
<filter-element type="OBJECT" id="function" selected="false" />
|
||||
<filter-element type="OBJECT" id="package" selected="false" />
|
||||
<filter-element type="OBJECT" id="type" selected="false" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="false" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="false" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="false" />
|
||||
</public-schema>
|
||||
<any-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="true" />
|
||||
<filter-element type="OBJECT" id="view" selected="true" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||
<filter-element type="OBJECT" id="index" selected="true" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||
<filter-element type="OBJECT" id="function" selected="true" />
|
||||
<filter-element type="OBJECT" id="package" selected="true" />
|
||||
<filter-element type="OBJECT" id="type" selected="true" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||
</any-schema>
|
||||
</basic-filter>
|
||||
<extended-filter>
|
||||
<filter-element type="RESERVED_WORD" id="keyword" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="function" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="parameter" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="datatype" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="exception" selected="true" />
|
||||
<filter-element type="OBJECT" id="schema" selected="true" />
|
||||
<filter-element type="OBJECT" id="user" selected="true" />
|
||||
<filter-element type="OBJECT" id="role" selected="true" />
|
||||
<filter-element type="OBJECT" id="privilege" selected="true" />
|
||||
<user-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="true" />
|
||||
<filter-element type="OBJECT" id="view" selected="true" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||
<filter-element type="OBJECT" id="index" selected="true" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||
<filter-element type="OBJECT" id="function" selected="true" />
|
||||
<filter-element type="OBJECT" id="package" selected="true" />
|
||||
<filter-element type="OBJECT" id="type" selected="true" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||
</user-schema>
|
||||
<public-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="true" />
|
||||
<filter-element type="OBJECT" id="view" selected="true" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||
<filter-element type="OBJECT" id="index" selected="true" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||
<filter-element type="OBJECT" id="function" selected="true" />
|
||||
<filter-element type="OBJECT" id="package" selected="true" />
|
||||
<filter-element type="OBJECT" id="type" selected="true" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||
</public-schema>
|
||||
<any-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="true" />
|
||||
<filter-element type="OBJECT" id="view" selected="true" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||
<filter-element type="OBJECT" id="index" selected="true" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||
<filter-element type="OBJECT" id="function" selected="true" />
|
||||
<filter-element type="OBJECT" id="package" selected="true" />
|
||||
<filter-element type="OBJECT" id="type" selected="true" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||
</any-schema>
|
||||
</extended-filter>
|
||||
</filters>
|
||||
<sorting enabled="true">
|
||||
<sorting-element type="RESERVED_WORD" id="keyword" />
|
||||
<sorting-element type="RESERVED_WORD" id="datatype" />
|
||||
<sorting-element type="OBJECT" id="column" />
|
||||
<sorting-element type="OBJECT" id="table" />
|
||||
<sorting-element type="OBJECT" id="view" />
|
||||
<sorting-element type="OBJECT" id="materialized view" />
|
||||
<sorting-element type="OBJECT" id="index" />
|
||||
<sorting-element type="OBJECT" id="constraint" />
|
||||
<sorting-element type="OBJECT" id="trigger" />
|
||||
<sorting-element type="OBJECT" id="synonym" />
|
||||
<sorting-element type="OBJECT" id="sequence" />
|
||||
<sorting-element type="OBJECT" id="procedure" />
|
||||
<sorting-element type="OBJECT" id="function" />
|
||||
<sorting-element type="OBJECT" id="package" />
|
||||
<sorting-element type="OBJECT" id="type" />
|
||||
<sorting-element type="OBJECT" id="dimension" />
|
||||
<sorting-element type="OBJECT" id="cluster" />
|
||||
<sorting-element type="OBJECT" id="dblink" />
|
||||
<sorting-element type="OBJECT" id="schema" />
|
||||
<sorting-element type="OBJECT" id="role" />
|
||||
<sorting-element type="OBJECT" id="user" />
|
||||
<sorting-element type="RESERVED_WORD" id="function" />
|
||||
<sorting-element type="RESERVED_WORD" id="parameter" />
|
||||
</sorting>
|
||||
<format>
|
||||
<enforce-code-style-case value="true" />
|
||||
</format>
|
||||
</code-completion-settings>
|
||||
<execution-engine-settings>
|
||||
<statement-execution>
|
||||
<fetch-block-size value="100" />
|
||||
<execution-timeout value="20" />
|
||||
<debug-execution-timeout value="600" />
|
||||
<focus-result value="false" />
|
||||
<prompt-execution value="false" />
|
||||
</statement-execution>
|
||||
<script-execution>
|
||||
<command-line-interfaces />
|
||||
<execution-timeout value="300" />
|
||||
</script-execution>
|
||||
<method-execution>
|
||||
<execution-timeout value="30" />
|
||||
<debug-execution-timeout value="600" />
|
||||
<parameter-history-size value="10" />
|
||||
</method-execution>
|
||||
</execution-engine-settings>
|
||||
<operation-settings>
|
||||
<transactions>
|
||||
<uncommitted-changes>
|
||||
<on-project-close value="ASK" />
|
||||
<on-disconnect value="ASK" />
|
||||
<on-autocommit-toggle value="ASK" />
|
||||
</uncommitted-changes>
|
||||
<multiple-uncommitted-changes>
|
||||
<on-commit value="ASK" />
|
||||
<on-rollback value="ASK" />
|
||||
</multiple-uncommitted-changes>
|
||||
</transactions>
|
||||
<session-browser>
|
||||
<disconnect-session value="ASK" />
|
||||
<kill-session value="ASK" />
|
||||
<reload-on-filter-change value="false" />
|
||||
</session-browser>
|
||||
<compiler>
|
||||
<compile-type value="KEEP" />
|
||||
<compile-dependencies value="ASK" />
|
||||
<always-show-controls value="false" />
|
||||
</compiler>
|
||||
<debugger>
|
||||
<debugger-type value="ASK" />
|
||||
<use-generic-runners value="true" />
|
||||
</debugger>
|
||||
</operation-settings>
|
||||
<ddl-file-settings>
|
||||
<extensions>
|
||||
<mapping file-type-id="VIEW" extensions="vw" />
|
||||
<mapping file-type-id="TRIGGER" extensions="trg" />
|
||||
<mapping file-type-id="PROCEDURE" extensions="prc" />
|
||||
<mapping file-type-id="FUNCTION" extensions="fnc" />
|
||||
<mapping file-type-id="PACKAGE" extensions="pkg" />
|
||||
<mapping file-type-id="PACKAGE_SPEC" extensions="pks" />
|
||||
<mapping file-type-id="PACKAGE_BODY" extensions="pkb" />
|
||||
<mapping file-type-id="TYPE" extensions="tpe" />
|
||||
<mapping file-type-id="TYPE_SPEC" extensions="tps" />
|
||||
<mapping file-type-id="TYPE_BODY" extensions="tpb" />
|
||||
</extensions>
|
||||
<general>
|
||||
<lookup-ddl-files value="true" />
|
||||
<create-ddl-files value="false" />
|
||||
<synchronize-ddl-files value="true" />
|
||||
<use-qualified-names value="false" />
|
||||
<make-scripts-rerunnable value="true" />
|
||||
</general>
|
||||
</ddl-file-settings>
|
||||
<general-settings>
|
||||
<regional-settings>
|
||||
<date-format value="MEDIUM" />
|
||||
<number-format value="UNGROUPED" />
|
||||
<locale value="SYSTEM_DEFAULT" />
|
||||
<use-custom-formats value="false" />
|
||||
</regional-settings>
|
||||
<environment>
|
||||
<environment-types>
|
||||
<environment-type id="development" name="Development" description="Development environment" color="-2430209/-12296320" readonly-code="false" readonly-data="false" />
|
||||
<environment-type id="integration" name="Integration" description="Integration environment" color="-2621494/-12163514" readonly-code="true" readonly-data="false" />
|
||||
<environment-type id="production" name="Production" description="Productive environment" color="-11574/-10271420" readonly-code="true" readonly-data="true" />
|
||||
<environment-type id="other" name="Other" description="" color="-1576/-10724543" readonly-code="false" readonly-data="false" />
|
||||
</environment-types>
|
||||
<visibility-settings>
|
||||
<connection-tabs value="true" />
|
||||
<dialog-headers value="true" />
|
||||
<object-editor-tabs value="true" />
|
||||
<script-editor-tabs value="false" />
|
||||
<execution-result-tabs value="true" />
|
||||
</visibility-settings>
|
||||
</environment>
|
||||
</general-settings>
|
||||
</component>
|
||||
</project>
|
@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="GradleMigrationSettings" migrationVersion="1" />
|
||||
<component name="GradleSettings">
|
||||
<option name="linkedExternalProjectsSettings">
|
||||
<GradleProjectSettings>
|
||||
<option name="testRunner" value="GRADLE" />
|
||||
<option name="distributionType" value="DEFAULT_WRAPPED" />
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||
<option name="modules">
|
||||
<set>
|
||||
<option value="$PROJECT_DIR$" />
|
||||
<option value="$PROJECT_DIR$/app" />
|
||||
</set>
|
||||
</option>
|
||||
</GradleProjectSettings>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="RemoteRepositoriesConfiguration">
|
||||
<remote-repository>
|
||||
<option name="id" value="central" />
|
||||
<option name="name" value="Maven Central repository" />
|
||||
<option name="url" value="https://repo1.maven.org/maven2" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="jboss.community" />
|
||||
<option name="name" value="JBoss Community repository" />
|
||||
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="BintrayJCenter" />
|
||||
<option name="name" value="BintrayJCenter" />
|
||||
<option name="url" value="https://jcenter.bintray.com/" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="Google" />
|
||||
<option name="name" value="Google" />
|
||||
<option name="url" value="https://dl.google.com/dl/android/maven2/" />
|
||||
</remote-repository>
|
||||
</component>
|
||||
</project>
|
@ -0,0 +1,34 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||
<component name="NullableNotNullManager">
|
||||
<option name="myDefaultNullable" value="android.support.annotation.Nullable" />
|
||||
<option name="myDefaultNotNull" value="android.support.annotation.NonNull" />
|
||||
<option name="myNullables">
|
||||
<value>
|
||||
<list size="4">
|
||||
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" />
|
||||
<item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" />
|
||||
<item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.Nullable" />
|
||||
<item index="3" class="java.lang.String" itemvalue="android.support.annotation.Nullable" />
|
||||
</list>
|
||||
</value>
|
||||
</option>
|
||||
<option name="myNotNulls">
|
||||
<value>
|
||||
<list size="4">
|
||||
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" />
|
||||
<item index="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull" />
|
||||
<item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" />
|
||||
<item index="3" class="java.lang.String" itemvalue="android.support.annotation.NonNull" />
|
||||
</list>
|
||||
</value>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||
</component>
|
||||
<component name="ProjectType">
|
||||
<option name="id" value="Android" />
|
||||
</component>
|
||||
</project>
|
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
@ -0,0 +1,161 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="AndroidLayouts">
|
||||
<shared>
|
||||
<config />
|
||||
</shared>
|
||||
</component>
|
||||
<component name="AutoImportSettings">
|
||||
<option name="autoReloadType" value="NONE" />
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="57ed9978-ea83-410f-9497-7ab3f4f731f0" name="Changes" comment="">
|
||||
<change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/modules.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/runConfigurations.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/build.gradle" beforeDir="false" afterPath="$PROJECT_DIR$/app/build.gradle" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/example/yzbkaka/things/ActivityCollector.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/example/yzbkaka/things/ActivityCollector.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/example/yzbkaka/things/Adapter/HistoryAdapter.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/example/yzbkaka/things/Adapter/HistoryAdapter.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/example/yzbkaka/things/Adapter/LogAdapter.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/example/yzbkaka/things/Adapter/LogAdapter.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/example/yzbkaka/things/Adapter/ScheduleAdapter.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/example/yzbkaka/things/Adapter/ScheduleAdapter.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/example/yzbkaka/things/Adapter/TodayAdapter.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/example/yzbkaka/things/Adapter/TodayAdapter.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/example/yzbkaka/things/DoubleClickListener.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/example/yzbkaka/things/DoubleClickListener.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/example/yzbkaka/things/db/Log.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/example/yzbkaka/things/db/Log.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/example/yzbkaka/things/db/Plan.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/example/yzbkaka/things/db/Plan.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/activity_main.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/activity_main.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/build.gradle" beforeDir="false" afterPath="$PROJECT_DIR$/build.gradle" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/gradle/wrapper/gradle-wrapper.properties" beforeDir="false" afterPath="$PROJECT_DIR$/gradle/wrapper/gradle-wrapper.properties" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="ExecutionTargetManager" SELECTED_TARGET="device_and_snapshot_combo_box_target[C:\Users\Mind\.android\avd\Pixel_5_API_31.avd]" />
|
||||
<component name="ExternalProjectsData">
|
||||
<projectState path="$PROJECT_DIR$">
|
||||
<ProjectState />
|
||||
</projectState>
|
||||
</component>
|
||||
<component name="ExternalProjectsManager">
|
||||
<system id="GRADLE">
|
||||
<state>
|
||||
<projects_view>
|
||||
<tree_state>
|
||||
<expand />
|
||||
<select />
|
||||
</tree_state>
|
||||
</projects_view>
|
||||
</state>
|
||||
</system>
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="MarkdownSettingsMigration">
|
||||
<option name="stateVersion" value="1" />
|
||||
</component>
|
||||
<component name="ProblemsViewState">
|
||||
<option name="selectedTabId" value="CurrentFile" />
|
||||
</component>
|
||||
<component name="ProjectId" id="2QWb3DyqpAZR4Oyh5SS2vxUQxvo" />
|
||||
<component name="ProjectViewState">
|
||||
<option name="hideEmptyMiddlePackages" value="true" />
|
||||
<option name="showLibraryContents" value="true" />
|
||||
</component>
|
||||
<component name="PropertiesComponent"><![CDATA[{
|
||||
"keyToString": {
|
||||
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"RunOnceActivity.cidr.known.project.marker": "true",
|
||||
"cidr.known.project.marker": "true",
|
||||
"last_opened_file_path": "C:/Users/Mind/Desktop",
|
||||
"project.structure.last.edited": "Modules",
|
||||
"project.structure.proportion": "0.17",
|
||||
"project.structure.side.proportion": "0.2",
|
||||
"settings.editor.selected.configurable": "preferences.pluginManager"
|
||||
}
|
||||
}]]></component>
|
||||
<component name="RunManager">
|
||||
<configuration name="app" type="AndroidRunConfigurationType" factoryName="Android App">
|
||||
<module name="Schedule.app.main" />
|
||||
<option name="DEPLOY" value="true" />
|
||||
<option name="DEPLOY_APK_FROM_BUNDLE" value="false" />
|
||||
<option name="DEPLOY_AS_INSTANT" value="false" />
|
||||
<option name="ARTIFACT_NAME" value="" />
|
||||
<option name="PM_INSTALL_OPTIONS" value="" />
|
||||
<option name="ALL_USERS" value="false" />
|
||||
<option name="ALWAYS_INSTALL_WITH_PM" value="false" />
|
||||
<option name="CLEAR_APP_STORAGE" value="false" />
|
||||
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="" />
|
||||
<option name="ACTIVITY_EXTRA_FLAGS" value="" />
|
||||
<option name="MODE" value="default_activity" />
|
||||
<option name="CLEAR_LOGCAT" value="false" />
|
||||
<option name="SHOW_LOGCAT_AUTOMATICALLY" value="false" />
|
||||
<option name="INSPECTION_WITHOUT_ACTIVITY_RESTART" value="false" />
|
||||
<option name="TARGET_SELECTION_MODE" value="DEVICE_AND_SNAPSHOT_COMBO_BOX" />
|
||||
<option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" />
|
||||
<option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
|
||||
<option name="DEBUGGER_TYPE" value="Auto" />
|
||||
<Auto>
|
||||
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
|
||||
<option name="SHOW_STATIC_VARS" value="true" />
|
||||
<option name="WORKING_DIR" value="" />
|
||||
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
|
||||
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
|
||||
</Auto>
|
||||
<Hybrid>
|
||||
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
|
||||
<option name="SHOW_STATIC_VARS" value="true" />
|
||||
<option name="WORKING_DIR" value="" />
|
||||
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
|
||||
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
|
||||
</Hybrid>
|
||||
<Java />
|
||||
<Native>
|
||||
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
|
||||
<option name="SHOW_STATIC_VARS" value="true" />
|
||||
<option name="WORKING_DIR" value="" />
|
||||
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
|
||||
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
|
||||
</Native>
|
||||
<Profilers>
|
||||
<option name="ADVANCED_PROFILING_ENABLED" value="false" />
|
||||
<option name="STARTUP_PROFILING_ENABLED" value="false" />
|
||||
<option name="STARTUP_CPU_PROFILING_ENABLED" value="false" />
|
||||
<option name="STARTUP_CPU_PROFILING_CONFIGURATION_NAME" value="Java/Kotlin Method Sample (legacy)" />
|
||||
<option name="STARTUP_NATIVE_MEMORY_PROFILING_ENABLED" value="false" />
|
||||
<option name="NATIVE_MEMORY_SAMPLE_RATE_BYTES" value="2048" />
|
||||
</Profilers>
|
||||
<option name="DEEP_LINK" value="" />
|
||||
<option name="ACTIVITY_CLASS" value="" />
|
||||
<option name="SEARCH_ACTIVITY_IN_GLOBAL_SCOPE" value="false" />
|
||||
<option name="SKIP_ACTIVITY_VALIDATION" value="false" />
|
||||
<method v="2">
|
||||
<option name="Android.Gradle.BeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
</component>
|
||||
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="Default task">
|
||||
<changelist id="57ed9978-ea83-410f-9497-7ab3f4f731f0" name="Changes" comment="" />
|
||||
<created>1685472083366</created>
|
||||
<option name="number" value="Default" />
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1685472083366</updated>
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
<component name="Vcs.Log.Tabs.Properties">
|
||||
<option name="TAB_STATES">
|
||||
<map>
|
||||
<entry key="MAIN">
|
||||
<value>
|
||||
<State />
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
@ -0,0 +1,201 @@
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
@ -0,0 +1,31 @@
|
||||
@startuml
|
||||
|
||||
title __SCHEDULE's Component Diagram__\n
|
||||
|
||||
component "Schedule.app.unitTest" {
|
||||
[Schedule.app.main]
|
||||
component "Schedule.app.main" {
|
||||
[Schedule.app.androidTest]
|
||||
component "Schedule.app.androidTest" {
|
||||
[Schedule.app]
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
[Schedule.app.androidTest] --> [Schedule.app.main]
|
||||
[Schedule.app.unitTest] --> [Schedule.app.main]
|
||||
|
||||
|
||||
right footer
|
||||
|
||||
|
||||
PlantUML diagram generated by SketchIt! (https://bitbucket.org/pmesmeur/sketch.it)
|
||||
For more information about this tool, please contact philippe.mesmeur@gmail.com
|
||||
endfooter
|
||||
|
||||
@enduml
|
@ -0,0 +1 @@
|
||||
/build
|
@ -0,0 +1,33 @@
|
||||
apply plugin: 'com.android.application'
|
||||
|
||||
android {
|
||||
compileSdkVersion 26
|
||||
defaultConfig {
|
||||
applicationId "com.example.yzbkaka.things"
|
||||
minSdkVersion 15
|
||||
targetSdkVersion 26
|
||||
versionCode 1
|
||||
versionName "1.0"
|
||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
minifyEnabled false
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
implementation 'com.android.support:appcompat-v7:26.0.0-beta1'
|
||||
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
|
||||
testImplementation 'junit:junit:4.12'
|
||||
androidTestImplementation 'com.android.support.test:runner:0.5'
|
||||
androidTestImplementation 'com.android.support.test.espresso:espresso-core:2.2.2'
|
||||
implementation 'com.android.support:design:26.1.0'
|
||||
implementation 'com.android.support:recyclerview-v7:26.1.0'
|
||||
implementation 'com.android.support:cardview-v7:26.1.0'
|
||||
implementation 'org.litepal.android:java:3.0.0'
|
||||
implementation 'com.prolificinteractive:material-calendarview:1.4.3'
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
# Add project specific ProGuard rules here.
|
||||
# You can control the set of applied configuration files using the
|
||||
# proguardFiles setting in build.gradle.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# 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 *;
|
||||
#}
|
||||
|
||||
# Uncomment this to preserve the line number information for
|
||||
# debugging stack traces.
|
||||
#-keepattributes SourceFile,LineNumberTable
|
||||
|
||||
# If you keep the line number information, uncomment this to
|
||||
# hide the original source file name.
|
||||
#-renamesourcefileattribute SourceFile
|
@ -0,0 +1 @@
|
||||
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":1},"path":"app-release.apk","properties":{"packageId":"com.example.yzbkaka.things","split":"","minSdkVersion":"15"}}]
|
@ -0,0 +1,26 @@
|
||||
package com.example.yzbkaka.things;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.test.InstrumentationRegistry;
|
||||
import android.support.test.runner.AndroidJUnit4;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* Instrumented test, which will execute on an Android device.
|
||||
*
|
||||
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
|
||||
*/
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class ExampleInstrumentedTest {
|
||||
@Test
|
||||
public void useAppContext() throws Exception {
|
||||
// Context of the app under test.
|
||||
Context appContext = InstrumentationRegistry.getTargetContext();
|
||||
|
||||
assertEquals("com.example.yzbkaka.things", appContext.getPackageName());
|
||||
}
|
||||
}
|
@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.example.yzbkaka.things">
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
|
||||
|
||||
<application
|
||||
android:name="org.litepal.LitePalApplication"
|
||||
android:allowBackup="true"
|
||||
android:icon="@drawable/logo144"
|
||||
android:label="@string/app_name"
|
||||
android:roundIcon="@mipmap/ic_launcher_round"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/AppTheme">
|
||||
<activity android:name=".MainActivity" />
|
||||
<activity android:name=".Today.NoteActivity" />
|
||||
<activity
|
||||
android:name=".Today.TodayCreateActivitty"
|
||||
android:theme="@style/MyTheme1"
|
||||
android:windowSoftInputMode="stateVisible|adjustPan" />
|
||||
<activity
|
||||
android:name=".Today.AlterTodayActivity"
|
||||
android:theme="@style/MyTheme1"
|
||||
android:windowSoftInputMode="stateVisible|adjustPan" />
|
||||
<activity android:name=".Log.LogActivity" />
|
||||
<activity
|
||||
android:name=".Log.LogCreateActivity"
|
||||
android:windowSoftInputMode="stateVisible|adjustPan" />
|
||||
<activity android:name=".Log.AlterLogActivity" />
|
||||
<activity android:name=".History.HistoryActivity" />
|
||||
<activity android:name=".Schedule.ScheduleActivity" />
|
||||
<activity android:name=".Schedule.ScheduleViewActivity" />
|
||||
<activity
|
||||
android:name=".Schedule.ScheduleCreateActivity"
|
||||
android:theme="@style/MyTheme1"
|
||||
android:windowSoftInputMode="stateVisible|adjustPan" />
|
||||
<activity android:name=".StartActivity">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity android:name=".Setting.SettingActivity" />
|
||||
|
||||
<service
|
||||
android:name=".Service.SendMessage"
|
||||
android:enabled="true"
|
||||
android:exported="true" />
|
||||
|
||||
<activity android:name=".Setting.ExplainActivity" />
|
||||
<activity
|
||||
android:name=".Schedule.AlterScheduleActivity"
|
||||
android:theme="@style/MyTheme1"
|
||||
android:windowSoftInputMode="stateVisible|adjustPan" />
|
||||
<activity android:name=".Setting.AboutActivity"></activity>
|
||||
</application>
|
||||
|
||||
</manifest>
|
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<litepal>
|
||||
<dbname value="Store"></dbname>
|
||||
<version value="1"></version>
|
||||
|
||||
<list>
|
||||
<mapping class="com.example.yzbkaka.things.db.Plan"></mapping>
|
||||
<mapping class="com.example.yzbkaka.things.db.Log"></mapping>
|
||||
</list>
|
||||
</litepal>
|
@ -0,0 +1,26 @@
|
||||
package com.example.yzbkaka.things;
|
||||
|
||||
import android.app.Activity;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class ActivityCollector {
|
||||
public static List<Activity> activities = new ArrayList<>();
|
||||
|
||||
public static void addActivity(Activity activity){
|
||||
activities.add(activity);
|
||||
}
|
||||
|
||||
public static void removeActivity(Activity activity){
|
||||
activities.remove(activity);
|
||||
}
|
||||
|
||||
public static void finishAll(){
|
||||
for(Activity activity : activities){
|
||||
if(!activity.isFinishing()){
|
||||
activity.finish();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,58 @@
|
||||
package com.example.yzbkaka.things.Adapter;
|
||||
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.example.yzbkaka.things.R;
|
||||
import com.example.yzbkaka.things.db.Plan;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public class HistoryAdapter extends RecyclerView.Adapter<HistoryAdapter.ViewHolder> {
|
||||
private List<Plan> mDataList;
|
||||
|
||||
static class ViewHolder extends RecyclerView.ViewHolder{
|
||||
TextView history;
|
||||
ImageView right;
|
||||
TextView time;
|
||||
|
||||
|
||||
public ViewHolder(View view){
|
||||
super(view);
|
||||
history = (TextView)view.findViewById(R.id.history_plan);
|
||||
right = (ImageView)view.findViewById(R.id.right_kuang);
|
||||
time = (TextView)view.findViewById(R.id.time);
|
||||
}
|
||||
}
|
||||
|
||||
public HistoryAdapter(List<Plan> dataList){
|
||||
mDataList = dataList;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
|
||||
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.history_item,parent,false); //加载子项布局
|
||||
final ViewHolder holder = new ViewHolder(view);
|
||||
return holder;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(ViewHolder holder , final int position){
|
||||
Plan plan = mDataList.get(position);
|
||||
holder.time.setText(plan.getMonth() + "月" + plan.getDay() + "日");
|
||||
holder.history.setText(plan.getWritePlan());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getItemCount(){
|
||||
return mDataList.size();
|
||||
}
|
||||
}
|
@ -0,0 +1,100 @@
|
||||
package com.example.yzbkaka.things.Adapter;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.support.v7.widget.CardView;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.example.yzbkaka.things.Log.AlterLogActivity;
|
||||
import com.example.yzbkaka.things.R;
|
||||
import com.example.yzbkaka.things.db.Log;
|
||||
|
||||
import org.litepal.LitePal;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static com.example.yzbkaka.things.Log.LogActivity.logAdapter;
|
||||
|
||||
|
||||
public class LogAdapter extends RecyclerView.Adapter<LogAdapter.ViewHolder> {
|
||||
private List<String> mLogList;
|
||||
|
||||
|
||||
static class ViewHolder extends RecyclerView.ViewHolder{
|
||||
View logView;
|
||||
CardView cardView;
|
||||
TextView logText;
|
||||
ImageView imageView;
|
||||
Button deleteLog;
|
||||
|
||||
public ViewHolder(View view){
|
||||
super(view);
|
||||
logView = view;
|
||||
cardView = (CardView)view;
|
||||
logText = (TextView)view.findViewById(R.id.log);
|
||||
imageView = (ImageView)view.findViewById(R.id.image_view);
|
||||
deleteLog = (Button)view.findViewById(R.id.delete_log);
|
||||
}
|
||||
}
|
||||
|
||||
public LogAdapter(List<String> logList){
|
||||
mLogList = logList;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
|
||||
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.log_item,parent,false); //加载子项布局
|
||||
final ViewHolder holder = new ViewHolder(view);
|
||||
return new ViewHolder(view);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(final ViewHolder holder, final int position){
|
||||
String writeLog = mLogList.get(position);
|
||||
holder.logText.setText(writeLog);
|
||||
holder.logView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
String writeLog = mLogList.get(position);
|
||||
Intent intent = new Intent(view.getContext(),AlterLogActivity.class); //自动获取上下文
|
||||
intent.putExtra("log",writeLog); //传输log内容
|
||||
view.getContext().startActivity(intent); //自动获取上下文后才能够启动活动
|
||||
}
|
||||
});
|
||||
|
||||
holder.logView.setOnLongClickListener(new View.OnLongClickListener() { //设置长按按钮功能
|
||||
@Override
|
||||
public boolean onLongClick(View view) {
|
||||
holder.deleteLog.setVisibility(View.VISIBLE); //将该按钮显示出来
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
holder.deleteLog.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
int deleteLogPosition = holder.getAdapterPosition();
|
||||
String deleteLogWrite = mLogList.get(deleteLogPosition); //获得到该位置的内容
|
||||
mLogList.remove(deleteLogPosition);
|
||||
holder.deleteLog.setVisibility(View.INVISIBLE); //再次隐藏按钮
|
||||
logAdapter.notifyDataSetChanged(); //更新适配器
|
||||
LitePal.deleteAll(Log.class,"logWrite = ?",deleteLogWrite); //从数据库中删除
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public int getItemCount(){
|
||||
return mLogList.size();
|
||||
}
|
||||
}
|
@ -0,0 +1,105 @@
|
||||
package com.example.yzbkaka.things.Adapter;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.example.yzbkaka.things.R;
|
||||
import com.example.yzbkaka.things.Schedule.AlterScheduleActivity;
|
||||
import com.example.yzbkaka.things.Today.AlterTodayActivity;
|
||||
import com.example.yzbkaka.things.db.Plan;
|
||||
|
||||
import org.litepal.LitePal;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static com.example.yzbkaka.things.Schedule.ScheduleViewActivity.scheduleAdapter;
|
||||
|
||||
|
||||
public class ScheduleAdapter extends RecyclerView.Adapter<ScheduleAdapter.ViewHolder> {
|
||||
private List<Plan> mDataList;
|
||||
|
||||
static class ViewHolder extends RecyclerView.ViewHolder{
|
||||
View scheduleView;
|
||||
TextView schedule;
|
||||
ImageView kuang;
|
||||
TextView time;
|
||||
Button delete;
|
||||
|
||||
|
||||
public ViewHolder(View view){
|
||||
super(view);
|
||||
scheduleView = view;
|
||||
schedule = (TextView)view.findViewById(R.id.schedule_plan);
|
||||
kuang = (ImageView)view.findViewById(R.id.kuang);
|
||||
time = (TextView)view.findViewById(R.id.schedule_time);
|
||||
delete = (Button)view.findViewById(R.id.delete_schedule);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public ScheduleAdapter(List<Plan> dataList){
|
||||
mDataList = dataList;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
|
||||
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.schedule_item,parent,false); //加载子项布局
|
||||
final ViewHolder holder = new ViewHolder(view);
|
||||
return holder;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(final ViewHolder holder , final int position){
|
||||
Plan plan = mDataList.get(position);
|
||||
holder.time.setText(plan.getMonth() + "月" + plan.getDay() + "日");
|
||||
holder.schedule.setText(plan.getWritePlan());
|
||||
|
||||
holder.scheduleView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
int writePosition = holder.getAdapterPosition();
|
||||
Plan viewPlan = mDataList.get(writePosition);
|
||||
String writeToday = viewPlan.getWritePlan();
|
||||
Intent intent = new Intent(view.getContext(),AlterScheduleActivity.class);
|
||||
intent.putExtra("write",writeToday);
|
||||
view.getContext().startActivity(intent);
|
||||
}
|
||||
});
|
||||
|
||||
holder.scheduleView.setOnLongClickListener(new View.OnLongClickListener() {
|
||||
@Override
|
||||
public boolean onLongClick(View view) {
|
||||
holder.delete.setVisibility(View.VISIBLE);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
holder.delete.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
int scheduleDeletePosition = holder.getAdapterPosition();
|
||||
Plan scheduleDeletePlan = mDataList.get(scheduleDeletePosition);
|
||||
String scheduleDeletePlanWrite = scheduleDeletePlan.getWritePlan();
|
||||
mDataList.remove(scheduleDeletePosition);
|
||||
scheduleAdapter.notifyDataSetChanged();
|
||||
LitePal.deleteAll(Plan.class,"writePlan = ?",scheduleDeletePlanWrite);
|
||||
holder.delete.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getItemCount(){
|
||||
return mDataList.size();
|
||||
}
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
package com.example.yzbkaka.things;
|
||||
|
||||
import android.view.View;
|
||||
|
||||
|
||||
|
||||
public abstract class DoubleClickListener implements View.OnClickListener {
|
||||
private static final long DOUBLE_TIME = 1000;
|
||||
private static long lastClickTime = 0;
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
long currentTimeMillis = System.currentTimeMillis();
|
||||
if (currentTimeMillis - lastClickTime < DOUBLE_TIME) {
|
||||
onDoubleClick(v);
|
||||
}
|
||||
lastClickTime = currentTimeMillis;
|
||||
}
|
||||
public abstract void onDoubleClick(View v);
|
||||
}
|
||||
|
@ -0,0 +1,77 @@
|
||||
package com.example.yzbkaka.things.History;
|
||||
|
||||
import android.os.Build;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.example.yzbkaka.things.Adapter.HistoryAdapter;
|
||||
import com.example.yzbkaka.things.R;
|
||||
import com.example.yzbkaka.things.db.Plan;
|
||||
|
||||
import org.litepal.LitePal;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class HistoryActivity extends AppCompatActivity {
|
||||
private Button back;
|
||||
private RecyclerView historyView;
|
||||
private Button clear;
|
||||
private List<Plan> historyList = new ArrayList<>();
|
||||
private List<Plan> dataList = new ArrayList<>();
|
||||
private HistoryAdapter myAdapter;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_history);
|
||||
back = (Button)findViewById(R.id.back);
|
||||
historyView = (RecyclerView)findViewById(R.id.history_view);
|
||||
clear = (Button)findViewById(R.id.clear);
|
||||
dataList = LitePal.findAll(Plan.class);
|
||||
|
||||
LinearLayoutManager manager = new LinearLayoutManager(this);
|
||||
historyView.setLayoutManager(manager);
|
||||
|
||||
back.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
finish();
|
||||
}
|
||||
});
|
||||
|
||||
clear.setOnClickListener(new View.OnClickListener() { //点击之后会清空列表
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
Toast.makeText(HistoryActivity.this, "清空!", Toast.LENGTH_SHORT).show();
|
||||
historyList.clear();
|
||||
myAdapter.notifyDataSetChanged(); //适配器在每一次list更新的时候都需要进行一次更新
|
||||
LitePal.deleteAll(Plan.class,"status = ?","1"); //删除所有status为true的plan
|
||||
}
|
||||
});
|
||||
|
||||
if(dataList.size() > 0){
|
||||
historyList.clear();
|
||||
for(Plan plan : dataList){
|
||||
if(plan.getStatus() == true){ //如果状态是完成,则加入到历史列表当中
|
||||
historyList.add(plan);
|
||||
}
|
||||
}
|
||||
}
|
||||
myAdapter = new HistoryAdapter(historyList);
|
||||
historyView.setAdapter(myAdapter);
|
||||
setLightMode();
|
||||
}
|
||||
|
||||
|
||||
private void setLightMode(){
|
||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
|
||||
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,68 @@
|
||||
package com.example.yzbkaka.things.Log;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.example.yzbkaka.things.R;
|
||||
import com.example.yzbkaka.things.db.Log;
|
||||
|
||||
import org.litepal.LitePal;
|
||||
|
||||
public class AlterLogActivity extends AppCompatActivity {
|
||||
private Button back;
|
||||
private Button save;
|
||||
private EditText editText;
|
||||
private String oldLog;
|
||||
Log log = new Log();
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_alter_log);
|
||||
|
||||
back = (Button)findViewById(R.id.back);
|
||||
save = (Button)findViewById(R.id.save);
|
||||
editText = (EditText)findViewById(R.id.edit_text);
|
||||
Intent intent = getIntent();
|
||||
oldLog = intent.getStringExtra("log"); //获得之前的log内容
|
||||
editText.setText(oldLog);
|
||||
|
||||
back.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
finish();
|
||||
}
|
||||
});
|
||||
|
||||
save.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
String newLog = editText.getText().toString();
|
||||
if(newLog.isEmpty()){
|
||||
LitePal.deleteAll(Log.class,"logWrite = ?",oldLog);
|
||||
}
|
||||
else{
|
||||
log.setLogWrite(newLog);
|
||||
log.updateAll("logWrite = ?",oldLog); //不能使用save的方法
|
||||
Toast.makeText(AlterLogActivity.this, "修改成功", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
finish();
|
||||
}
|
||||
});
|
||||
|
||||
setLightMode();
|
||||
}
|
||||
|
||||
|
||||
private void setLightMode(){
|
||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
|
||||
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,87 @@
|
||||
package com.example.yzbkaka.things.Log;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
import android.support.design.widget.FloatingActionButton;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.support.v7.widget.StaggeredGridLayoutManager;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
|
||||
import com.example.yzbkaka.things.Adapter.LogAdapter;
|
||||
import com.example.yzbkaka.things.R;
|
||||
import com.example.yzbkaka.things.db.Log;
|
||||
|
||||
import org.litepal.LitePal;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class LogActivity extends AppCompatActivity {
|
||||
private Button back; //返回
|
||||
private RecyclerView logView; //显示日志的View
|
||||
private List<String> logList = new ArrayList<>(); //log的列表
|
||||
private List<Log> dataList = new ArrayList<>(); //获得数据库中的Log
|
||||
private FloatingActionButton create; //创建按钮
|
||||
public static LogAdapter logAdapter; //适配器
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_log);
|
||||
back = (Button)findViewById(R.id.back);
|
||||
logView = (RecyclerView) findViewById(R.id.log_list);
|
||||
create = (FloatingActionButton)findViewById(R.id.create);
|
||||
|
||||
logView.setAdapter(logAdapter);
|
||||
|
||||
|
||||
back.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
finish();
|
||||
}
|
||||
});
|
||||
|
||||
create.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
Intent intent = new Intent(LogActivity.this,LogCreateActivity.class);
|
||||
startActivity(intent);
|
||||
}
|
||||
});
|
||||
|
||||
setLightMode();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onStart(){
|
||||
super.onStart();
|
||||
StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL); //设置为瀑布式布局
|
||||
logView.setLayoutManager(layoutManager);
|
||||
logAdapter = new LogAdapter(logList);
|
||||
|
||||
dataList = LitePal.findAll(Log.class);
|
||||
if(dataList.size() > 0){
|
||||
logList.clear();
|
||||
for(Log log : dataList){
|
||||
logList.add(log.getLogWrite());
|
||||
}
|
||||
}
|
||||
else{
|
||||
logList.clear();
|
||||
}
|
||||
logView.setAdapter(logAdapter);
|
||||
}
|
||||
|
||||
|
||||
private void setLightMode(){
|
||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
|
||||
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,57 @@
|
||||
package com.example.yzbkaka.things.Log;
|
||||
|
||||
import android.os.Build;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
|
||||
import com.example.yzbkaka.things.R;
|
||||
import com.example.yzbkaka.things.db.Log;
|
||||
|
||||
public class LogCreateActivity extends AppCompatActivity {
|
||||
private Button back;
|
||||
private EditText editText;
|
||||
private Button save;
|
||||
private String write;
|
||||
Log log = new Log();
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_log_create);
|
||||
back = (Button)findViewById(R.id.back);
|
||||
editText = (EditText)findViewById(R.id.edit_text);
|
||||
save = (Button)findViewById(R.id.save);
|
||||
|
||||
back.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
finish();
|
||||
}
|
||||
});
|
||||
|
||||
save.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
write = editText.getText().toString();
|
||||
if(!write.isEmpty()){
|
||||
log.setLogWrite(write);
|
||||
log.save();
|
||||
}
|
||||
finish();
|
||||
}
|
||||
});
|
||||
|
||||
setLightMode();
|
||||
}
|
||||
|
||||
|
||||
private void setLightMode(){
|
||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
|
||||
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,77 @@
|
||||
package com.example.yzbkaka.things.Schedule;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.example.yzbkaka.things.R;
|
||||
import com.example.yzbkaka.things.Today.TodayCreateActivitty;
|
||||
import com.prolificinteractive.materialcalendarview.CalendarDay;
|
||||
import com.prolificinteractive.materialcalendarview.MaterialCalendarView;
|
||||
import com.prolificinteractive.materialcalendarview.OnDateSelectedListener;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.TimeZone;
|
||||
|
||||
|
||||
public class ScheduleActivity extends AppCompatActivity {
|
||||
private Button back;
|
||||
private MaterialCalendarView calendarView;
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_schedule);
|
||||
back = (Button)findViewById(R.id.back);
|
||||
calendarView = (MaterialCalendarView)findViewById(R.id.calendarView);
|
||||
|
||||
Calendar calendar = Calendar.getInstance(); //得到今天的时间
|
||||
calendar.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
|
||||
final String todayYear = String.valueOf(calendar.get(Calendar.YEAR));
|
||||
final String todayMonth = String.valueOf(calendar.get(Calendar.MONTH)+1);
|
||||
final String todayDay = String.valueOf(calendar.get(Calendar.DATE));
|
||||
|
||||
back.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
finish();
|
||||
}
|
||||
});
|
||||
|
||||
calendarView.setOnDateChangedListener(new OnDateSelectedListener() {
|
||||
@Override
|
||||
public void onDateSelected(@NonNull MaterialCalendarView widget, @NonNull CalendarDay date, boolean selected) {
|
||||
String year = String.valueOf(date.getYear()); //得到选中的时间
|
||||
String month = String.valueOf(date.getMonth()+1);
|
||||
String day = String.valueOf(date.getDay());
|
||||
|
||||
if(((year.equals(todayYear) && month.equals(todayMonth) && Integer.parseInt(day) < Integer.parseInt(todayDay))) || (year.equals(todayYear) && Integer.parseInt(month) < Integer.parseInt(todayMonth)) || (Integer.parseInt(year) < Integer.parseInt(todayYear))){ //如果选中的是今天,则会创建失败
|
||||
Toast.makeText(ScheduleActivity.this, "请选择未来的时间点哦", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
else {
|
||||
Intent intent = new Intent(ScheduleActivity.this, ScheduleCreateActivity.class);
|
||||
intent.putExtra("year",year);
|
||||
intent.putExtra("month",month);
|
||||
intent.putExtra("day",day);
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
setLightMode();
|
||||
}
|
||||
|
||||
|
||||
private void setLightMode(){
|
||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
|
||||
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,57 @@
|
||||
package com.example.yzbkaka.things.Schedule;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.example.yzbkaka.things.R;
|
||||
import com.example.yzbkaka.things.db.Plan;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.TimeZone;
|
||||
|
||||
public class ScheduleCreateActivity extends AppCompatActivity {
|
||||
private Button finish;
|
||||
private EditText editText;
|
||||
String write;
|
||||
Plan plan = new Plan();
|
||||
Date date;
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_schedule_create);
|
||||
finish = (Button)findViewById(R.id.finish);
|
||||
editText = (EditText)findViewById(R.id.edit_text);
|
||||
calendar.setTimeZone(TimeZone.getTimeZone("GMT+8:00")); //设置为中国区的时间
|
||||
|
||||
Intent intent = getIntent();
|
||||
final String scheduleYear = intent.getStringExtra("year");
|
||||
final String scheduleMonth = intent.getStringExtra("month");
|
||||
final String scheduleDay = intent.getStringExtra("day");
|
||||
|
||||
finish.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
write = editText.getText().toString();
|
||||
if(!write.isEmpty()){
|
||||
plan.setWritePlan(write);
|
||||
plan.setYear(scheduleYear);
|
||||
plan.setMonth(scheduleMonth);
|
||||
plan.setDay(scheduleDay);
|
||||
date = new Date(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH)+1,calendar.get(Calendar.DATE));
|
||||
plan.save();
|
||||
Toast.makeText(ScheduleCreateActivity.this, "创建成功,记得要完成哦", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
finish();
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
}
|
@ -0,0 +1,100 @@
|
||||
package com.example.yzbkaka.things.Schedule;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
import android.support.design.widget.FloatingActionButton;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
|
||||
import com.example.yzbkaka.things.Adapter.ScheduleAdapter;
|
||||
import com.example.yzbkaka.things.R;
|
||||
import com.example.yzbkaka.things.db.Plan;
|
||||
|
||||
import org.litepal.LitePal;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
import java.util.TimeZone;
|
||||
|
||||
public class ScheduleViewActivity extends AppCompatActivity {
|
||||
private Button back;
|
||||
private RecyclerView scheduleView;
|
||||
private List<Plan> dataList = new ArrayList<>();
|
||||
private List<Plan> scheduleList = new ArrayList<>();
|
||||
public static ScheduleAdapter scheduleAdapter;
|
||||
private FloatingActionButton create;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_schedule_view);
|
||||
back = (Button)findViewById(R.id.back);
|
||||
scheduleView = (RecyclerView)findViewById(R.id.schedule_view);
|
||||
create = (FloatingActionButton)findViewById(R.id.create);
|
||||
|
||||
LinearLayoutManager manager = new LinearLayoutManager(this);
|
||||
scheduleView.setLayoutManager(manager);
|
||||
|
||||
back.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
finish();
|
||||
}
|
||||
});
|
||||
|
||||
create.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
Intent intent = new Intent(ScheduleViewActivity.this,ScheduleActivity.class);
|
||||
startActivity(intent);
|
||||
}
|
||||
});
|
||||
|
||||
setLightMode();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onResume(){
|
||||
super.onResume();
|
||||
dataList = LitePal.findAll(Plan.class);
|
||||
create.setVisibility(View.VISIBLE);
|
||||
|
||||
|
||||
Calendar calendar = Calendar.getInstance(); //获取到今天的时间
|
||||
calendar.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
|
||||
String year = String.valueOf(calendar.get(Calendar.YEAR));
|
||||
String month = String.valueOf(calendar.get(Calendar.MONTH)+1);
|
||||
String day = String.valueOf(calendar.get(Calendar.DATE));
|
||||
|
||||
if (dataList.size() > 0){
|
||||
scheduleList.clear();
|
||||
for(Plan plan : dataList){
|
||||
if((plan.getYear().equals(year) && plan.getMonth().equals(month) && Integer.parseInt(plan.getDay()) > Integer.parseInt(day) ) || ( plan.getYear().equals(year) && Integer.parseInt(plan.getMonth()) > Integer.parseInt(month) ) || (Integer.parseInt(plan.getYear()) > Integer.parseInt(year)) ){ //只要不是今天的就会显示在计划列表当中
|
||||
scheduleList.add(plan);
|
||||
//排序
|
||||
}
|
||||
}
|
||||
}
|
||||
scheduleAdapter = new ScheduleAdapter(scheduleList);
|
||||
scheduleView.setAdapter(scheduleAdapter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause(){
|
||||
super.onPause();
|
||||
create.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
|
||||
private void setLightMode(){
|
||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
|
||||
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
package com.example.yzbkaka.things.Setting;
|
||||
|
||||
import android.os.Build;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.webkit.WebView;
|
||||
import android.webkit.WebViewClient;
|
||||
|
||||
import com.example.yzbkaka.things.R;
|
||||
|
||||
public class AboutActivity extends AppCompatActivity {
|
||||
private WebView webView;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_about);
|
||||
webView = (WebView)findViewById(R.id.webview);
|
||||
webView.getSettings().setJavaScriptEnabled(true);
|
||||
webView.setWebViewClient(new WebViewClient());
|
||||
webView.loadUrl("https://github.com/yzbkaka/Schedule");
|
||||
setLightMode();
|
||||
}
|
||||
|
||||
private void setLightMode(){
|
||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
|
||||
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,183 @@
|
||||
package com.example.yzbkaka.things.Setting;
|
||||
|
||||
import android.os.Build;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.animation.Animation;
|
||||
import android.view.animation.AnimationUtils;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
import com.example.yzbkaka.things.R;
|
||||
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
|
||||
public class ExplainActivity extends AppCompatActivity {
|
||||
private Button back;
|
||||
private LinearLayout explain1;
|
||||
private LinearLayout explain2;
|
||||
private LinearLayout explain3;
|
||||
private LinearLayout explain4;
|
||||
private LinearLayout explain5;
|
||||
private ImageView img1;
|
||||
private ImageView img2;
|
||||
private ImageView img3;
|
||||
private ImageView img4;
|
||||
private ImageView img5;
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_explain);
|
||||
back = (Button)findViewById(R.id.back);
|
||||
explain1 = (LinearLayout)findViewById(R.id.explain_one);
|
||||
explain2 = (LinearLayout)findViewById(R.id.explain_two);
|
||||
explain3 = (LinearLayout)findViewById(R.id.explain_three);
|
||||
explain4 = (LinearLayout)findViewById(R.id.explain_four);
|
||||
explain5 = (LinearLayout)findViewById(R.id.explain_five);
|
||||
img1 = (ImageView)findViewById(R.id.explain_button_one);
|
||||
img2 = (ImageView)findViewById(R.id.explain_button_two);
|
||||
img3 = (ImageView)findViewById(R.id.explain_button_three);
|
||||
img4 = (ImageView)findViewById(R.id.explain_button_four);
|
||||
img5 = (ImageView)findViewById(R.id.explain_button_five);
|
||||
|
||||
|
||||
|
||||
back.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
finish();
|
||||
}
|
||||
});
|
||||
|
||||
img1.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
img1.setImageResource(R.drawable.yes);
|
||||
final Animation animation = AnimationUtils.loadAnimation(ExplainActivity.this,R.anim.today_anim); //设置动画
|
||||
explain1.startAnimation(animation);
|
||||
TimerTask task = new TimerTask() {
|
||||
@Override
|
||||
public void run() {
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
explain1.setVisibility(View.GONE);
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
Timer timer = new Timer();
|
||||
timer.schedule(task, 800);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
img2.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
img2.setImageResource(R.drawable.yes);
|
||||
Animation animation = AnimationUtils.loadAnimation(ExplainActivity.this,R.anim.today_anim); //设置动画
|
||||
explain2.startAnimation(animation);
|
||||
|
||||
TimerTask task = new TimerTask() {
|
||||
@Override
|
||||
public void run() {
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
explain2.setVisibility(View.GONE);
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
Timer timer = new Timer();
|
||||
timer.schedule(task,800);
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
img3.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
img3.setImageResource(R.drawable.yes);
|
||||
Animation animation = AnimationUtils.loadAnimation(ExplainActivity.this,R.anim.today_anim); //设置动画
|
||||
explain3.startAnimation(animation);
|
||||
TimerTask task = new TimerTask() {
|
||||
@Override
|
||||
public void run() {
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
explain3.setVisibility(View.GONE);
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
Timer timer = new Timer();
|
||||
timer.schedule(task,800);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
img4.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
img4.setImageResource(R.drawable.yes);
|
||||
Animation animation = AnimationUtils.loadAnimation(ExplainActivity.this,R.anim.today_anim); //设置动画
|
||||
explain4.startAnimation(animation);
|
||||
TimerTask task = new TimerTask() {
|
||||
@Override
|
||||
public void run() {
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
explain4.setVisibility(View.GONE);
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
Timer timer = new Timer();
|
||||
timer.schedule(task,800);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
img5.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
img5.setImageResource(R.drawable.yes);
|
||||
Animation animation = AnimationUtils.loadAnimation(ExplainActivity.this,R.anim.today_anim); //设置动画
|
||||
explain5.startAnimation(animation);
|
||||
TimerTask task = new TimerTask() {
|
||||
@Override
|
||||
public void run() {
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
explain5.setVisibility(View.GONE);
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
Timer timer = new Timer();
|
||||
timer.schedule(task,800);
|
||||
}
|
||||
});
|
||||
|
||||
setLightMode();
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void setLightMode(){
|
||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
|
||||
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,106 @@
|
||||
package com.example.yzbkaka.things.Setting;
|
||||
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
import com.example.yzbkaka.things.ActivityCollector;
|
||||
import com.example.yzbkaka.things.R;
|
||||
import com.example.yzbkaka.things.Service.SendMessage;
|
||||
import com.prolificinteractive.materialcalendarview.WeekView;
|
||||
|
||||
public class SettingActivity extends AppCompatActivity {
|
||||
private Button checkSendMessage;
|
||||
private Button back;
|
||||
private LinearLayout explain;
|
||||
private LinearLayout about;
|
||||
private LinearLayout exit;
|
||||
public static int count = 0;
|
||||
private Button dark;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_setting);
|
||||
ActivityCollector.addActivity(this);
|
||||
checkSendMessage = (Button) findViewById(R.id.check_send);
|
||||
back = (Button)findViewById(R.id.back);
|
||||
explain = (LinearLayout)findViewById(R.id.how_to_use);
|
||||
about = (LinearLayout)findViewById(R.id.about);
|
||||
exit = (LinearLayout)findViewById(R.id.exit);
|
||||
|
||||
if(count%2 == 0){
|
||||
checkSendMessage.setBackgroundResource(R.drawable.checkno);
|
||||
}
|
||||
else{
|
||||
checkSendMessage.setBackgroundResource(R.drawable.checkyes);
|
||||
}
|
||||
|
||||
checkSendMessage.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
if(count%2 == 0){ //同意开启发送通知
|
||||
count++;
|
||||
checkSendMessage.setBackgroundResource(R.drawable.checkyes);
|
||||
Intent intent = new Intent(SettingActivity.this, SendMessage.class);
|
||||
startService(intent); //启动服务
|
||||
}
|
||||
else{ //拒绝发送通知
|
||||
count++;
|
||||
checkSendMessage.setBackgroundResource(R.drawable.checkno);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
explain.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
Intent explainIntent = new Intent(SettingActivity.this,ExplainActivity.class);
|
||||
startActivity(explainIntent);
|
||||
}
|
||||
});
|
||||
|
||||
about.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
Intent aboutIntent = new Intent(SettingActivity.this,AboutActivity.class);
|
||||
startActivity(aboutIntent);
|
||||
}
|
||||
});
|
||||
|
||||
exit.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
ActivityCollector.finishAll();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
back.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
finish();
|
||||
}
|
||||
});
|
||||
|
||||
setLightMode();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy(){
|
||||
super.onDestroy();
|
||||
ActivityCollector.removeActivity(this);
|
||||
}
|
||||
|
||||
|
||||
private void setLightMode(){
|
||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
|
||||
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
package com.example.yzbkaka.things;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
|
||||
public class StartActivity extends AppCompatActivity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_start);
|
||||
|
||||
|
||||
TimerTask task = new TimerTask() { //设置开启app的动画
|
||||
@Override
|
||||
public void run() {
|
||||
Intent intent = new Intent(StartActivity.this,MainActivity.class);
|
||||
startActivity(intent);
|
||||
finish();
|
||||
}
|
||||
};
|
||||
|
||||
Timer timer = new Timer();
|
||||
timer.schedule(task,1000);
|
||||
}
|
||||
}
|
@ -0,0 +1,118 @@
|
||||
package com.example.yzbkaka.things.Today;
|
||||
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
import android.support.design.widget.FloatingActionButton;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.TextView;
|
||||
|
||||
|
||||
import com.example.yzbkaka.things.Adapter.TodayAdapter;
|
||||
import com.example.yzbkaka.things.R;
|
||||
import com.example.yzbkaka.things.db.Plan;
|
||||
|
||||
import org.litepal.LitePal;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
import java.util.TimeZone;
|
||||
|
||||
import static com.example.yzbkaka.things.MainActivity.todayCount;
|
||||
|
||||
|
||||
public class NoteActivity extends AppCompatActivity {
|
||||
private Button back; //后退键
|
||||
private RecyclerView todayView; //显示今天所有任务的ListView
|
||||
private List<Plan> todayList = new ArrayList<>(); //今天任务的列表
|
||||
private List<Plan> dataList = new ArrayList<>(); //获得Plan数据库的列表
|
||||
private FloatingActionButton create; //创建新任务的按钮
|
||||
public static TodayAdapter todayAdapter; //适配器
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_note);
|
||||
back = (Button)findViewById(R.id.back);
|
||||
todayView = (RecyclerView) findViewById(R.id.today_list);
|
||||
create = (FloatingActionButton) findViewById(R.id.create);
|
||||
|
||||
|
||||
LinearLayoutManager layoutManager = new LinearLayoutManager(this); //一定要为RecyclerView设置布局管理器
|
||||
todayView.setLayoutManager(layoutManager);
|
||||
|
||||
back.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
finish();
|
||||
}
|
||||
});
|
||||
|
||||
create.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
Intent intent = new Intent(NoteActivity.this, TodayCreateActivitty.class);
|
||||
create.setVisibility(View.GONE);
|
||||
startActivity(intent);
|
||||
}
|
||||
});
|
||||
|
||||
todayAdapter = new TodayAdapter(todayList);
|
||||
todayView.setAdapter(todayAdapter);
|
||||
|
||||
setLightMode();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
create.setVisibility(View.VISIBLE); //右下角的创建按钮显示出来
|
||||
dataList = LitePal.findAll(Plan.class);
|
||||
|
||||
Calendar calendar = Calendar.getInstance(); //获得今天的时间
|
||||
calendar.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
|
||||
String year = String.valueOf(calendar.get(Calendar.YEAR));
|
||||
String month = String.valueOf(calendar.get(Calendar.MONTH)+1);
|
||||
String day = String.valueOf(calendar.get(Calendar.DATE));
|
||||
|
||||
|
||||
if(dataList.size() > 0){
|
||||
todayList.clear();
|
||||
for(Plan plan:dataList){
|
||||
if(plan.getYear().equals(year) && plan.getMonth().equals(month) && plan.getDay().equals(day) && plan.getStatus()== false){
|
||||
todayList.add(plan);
|
||||
//todayCount++; //today统计数量加1
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
todayList.clear();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onPause(){
|
||||
super.onPause();
|
||||
create.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
|
||||
private void setLightMode(){
|
||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
|
||||
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,66 @@
|
||||
package com.example.yzbkaka.things.Today;
|
||||
|
||||
import android.os.Build;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
|
||||
|
||||
import com.example.yzbkaka.things.R;
|
||||
import com.example.yzbkaka.things.db.Plan;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.TimeZone;
|
||||
|
||||
import static com.example.yzbkaka.things.MainActivity.todayCount;
|
||||
|
||||
|
||||
public class TodayCreateActivitty extends AppCompatActivity {
|
||||
private EditText editText; //写下的计划
|
||||
private Button finish; //完成后的按钮
|
||||
private String write; //输入的内容
|
||||
private Calendar calendar; //获得时间
|
||||
Date date;
|
||||
Plan plan = new Plan();
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_today_create_activitty);
|
||||
editText = (EditText)findViewById(R.id.edit_text);
|
||||
finish = (Button)findViewById(R.id.finish);
|
||||
|
||||
calendar = Calendar.getInstance(); //获得实例
|
||||
calendar.setTimeZone(TimeZone.getTimeZone("GMT+8:00")); //设置为中国区的时间
|
||||
|
||||
finish.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
write = String.valueOf(editText.getText()); //获得输入的内容
|
||||
if(!write.isEmpty()){
|
||||
plan.setWritePlan(write);
|
||||
plan.setYear(String.valueOf(calendar.get(Calendar.YEAR))); //设置写下的时间,年
|
||||
plan.setMonth(String.valueOf(calendar.get(Calendar.MONTH)+1)); //设置月份(系统中是从0开始的)
|
||||
plan.setDay(String.valueOf(calendar.get(Calendar.DATE))); //设置日期
|
||||
date = new Date(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH)+1,calendar.get(Calendar.DATE)); //设置plan中的date
|
||||
plan.setCreateTime(date);
|
||||
todayCount++; //today统计数量加1
|
||||
plan.save();
|
||||
}
|
||||
finish();
|
||||
}
|
||||
});
|
||||
|
||||
setLightMode();
|
||||
}
|
||||
|
||||
|
||||
private void setLightMode(){
|
||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
|
||||
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package com.example.yzbkaka.things.db;
|
||||
|
||||
import org.litepal.crud.LitePalSupport;
|
||||
|
||||
public class Log extends LitePalSupport {
|
||||
int id;
|
||||
String logWrite;
|
||||
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public void setLogWrite(String logWrite) {
|
||||
this.logWrite = logWrite;
|
||||
}
|
||||
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public String getLogWrite() {
|
||||
return logWrite;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,74 @@
|
||||
package com.example.yzbkaka.things.db;
|
||||
|
||||
import org.litepal.crud.LitePalSupport;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
public class Plan extends LitePalSupport {
|
||||
int id;
|
||||
String writePlan;
|
||||
String year;
|
||||
String month;
|
||||
String day;
|
||||
boolean status; //默认值为false
|
||||
Date createTime; //创建的时间
|
||||
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getWritePlan() {
|
||||
return writePlan;
|
||||
}
|
||||
|
||||
public void setWritePlan(String writePlan) {
|
||||
this.writePlan = writePlan;
|
||||
}
|
||||
|
||||
public String getYear() {
|
||||
return year;
|
||||
}
|
||||
|
||||
public void setYear(String year) {
|
||||
this.year = year;
|
||||
}
|
||||
|
||||
public String getMonth() {
|
||||
return month;
|
||||
}
|
||||
|
||||
public void setMonth(String month) {
|
||||
this.month = month;
|
||||
}
|
||||
|
||||
public String getDay() {
|
||||
return day;
|
||||
}
|
||||
|
||||
public void setDay(String day) {
|
||||
this.day = day;
|
||||
}
|
||||
|
||||
public boolean getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus(boolean status) {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public Date getCreateTime() {
|
||||
return createTime;
|
||||
}
|
||||
|
||||
public void setCreateTime(Date createTime) {
|
||||
this.createTime = createTime;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<set xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:fillAfter="true"
|
||||
android:duration="850">
|
||||
|
||||
<translate
|
||||
android:fromXDelta="0"
|
||||
android:toXDelta="1200"/>
|
||||
</set>
|
@ -0,0 +1,34 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="108dp"
|
||||
android:height="108dp"
|
||||
android:viewportHeight="108"
|
||||
android:viewportWidth="108">
|
||||
<path
|
||||
android:fillType="evenOdd"
|
||||
android:pathData="M32,64C32,64 38.39,52.99 44.13,50.95C51.37,48.37 70.14,49.57 70.14,49.57L108.26,87.69L108,109.01L75.97,107.97L32,64Z"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeWidth="1">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:endX="78.5885"
|
||||
android:endY="90.9159"
|
||||
android:startX="48.7653"
|
||||
android:startY="61.0927"
|
||||
android:type="linear">
|
||||
<item
|
||||
android:color="#44000000"
|
||||
android:offset="0.0" />
|
||||
<item
|
||||
android:color="#00000000"
|
||||
android:offset="1.0" />
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<path
|
||||
android:fillColor="#FFFFFF"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M66.94,46.02L66.94,46.02C72.44,50.07 76,56.61 76,64L32,64C32,56.61 35.56,50.11 40.98,46.06L36.18,41.19C35.45,40.45 35.45,39.3 36.18,38.56C36.91,37.81 38.05,37.81 38.78,38.56L44.25,44.05C47.18,42.57 50.48,41.71 54,41.71C57.48,41.71 60.78,42.57 63.68,44.05L69.11,38.56C69.84,37.81 70.98,37.81 71.71,38.56C72.44,39.3 72.44,40.45 71.71,41.19L66.94,46.02ZM62.94,56.92C64.08,56.92 65,56.01 65,54.88C65,53.76 64.08,52.85 62.94,52.85C61.8,52.85 60.88,53.76 60.88,54.88C60.88,56.01 61.8,56.92 62.94,56.92ZM45.06,56.92C46.2,56.92 47.13,56.01 47.13,54.88C47.13,53.76 46.2,52.85 45.06,52.85C43.92,52.85 43,53.76 43,54.88C43,56.01 43.92,56.92 45.06,56.92Z"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeWidth="1" />
|
||||
</vector>
|
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 515 B |
After Width: | Height: | Size: 343 B |
After Width: | Height: | Size: 48 KiB |
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 373 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 231 B |
After Width: | Height: | Size: 401 B |
After Width: | Height: | Size: 546 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 362 B |
After Width: | Height: | Size: 6.9 KiB |
After Width: | Height: | Size: 569 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 219 B |
After Width: | Height: | Size: 5.6 KiB |
@ -0,0 +1,170 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="108dp"
|
||||
android:height="108dp"
|
||||
android:viewportHeight="108"
|
||||
android:viewportWidth="108">
|
||||
<path
|
||||
android:fillColor="#26A69A"
|
||||
android:pathData="M0,0h108v108h-108z" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M9,0L9,108"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,0L19,108"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M29,0L29,108"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M39,0L39,108"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M49,0L49,108"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M59,0L59,108"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M69,0L69,108"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M79,0L79,108"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M89,0L89,108"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M99,0L99,108"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,9L108,9"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,19L108,19"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,29L108,29"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,39L108,39"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,49L108,49"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,59L108,59"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,69L108,69"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,79L108,79"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,89L108,89"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,99L108,99"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,29L89,29"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,39L89,39"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,49L89,49"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,59L89,59"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,69L89,69"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,79L89,79"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M29,19L29,89"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M39,19L39,89"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M49,19L49,89"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M59,19L59,89"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M69,19L69,89"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M79,19L79,89"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
</vector>
|
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 365 B |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 595 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 527 B |
After Width: | Height: | Size: 384 B |
After Width: | Height: | Size: 420 B |
After Width: | Height: | Size: 709 B |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 854 B |
After Width: | Height: | Size: 1.2 KiB |
@ -0,0 +1,11 @@
|
||||
<?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">
|
||||
|
||||
<WebView
|
||||
android:id="@+id/webview"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"></WebView>
|
||||
|
||||
</LinearLayout>
|
@ -0,0 +1,42 @@
|
||||
<?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">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize">
|
||||
|
||||
<Button
|
||||
android:id="@+id/back"
|
||||
android:layout_width="30sp"
|
||||
android:layout_height="30sp"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:background="@drawable/back"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/save"
|
||||
android:layout_width="25sp"
|
||||
android:layout_height="25sp"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_marginTop="2dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_alignParentRight="true"
|
||||
android:background="@drawable/right"/>
|
||||
</RelativeLayout>
|
||||
|
||||
|
||||
<EditText
|
||||
android:id="@+id/edit_text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="来记录一下吧!"
|
||||
android:layout_marginLeft="19sp"
|
||||
android:textColor="#000"
|
||||
android:textSize="20dp"
|
||||
android:textCursorDrawable="@null"/>
|
||||
|
||||
</LinearLayout>
|
@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginTop="300dp"
|
||||
android:background="@drawable/blank">
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
|
||||
<ImageView
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:background="@drawable/yes2"/>
|
||||
|
||||
<EditText
|
||||
android:id="@+id/old_text"
|
||||
android:layout_width="290dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginLeft="5dp"
|
||||
android:textSize="20dp"
|
||||
android:hint="写下今天的计划吧!"
|
||||
android:singleLine="true"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/finish"
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:background="@drawable/enter"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginTop="300dp"
|
||||
android:background="@drawable/blank">
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
|
||||
<ImageView
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:background="@drawable/yes2"/>
|
||||
|
||||
<EditText
|
||||
android:id="@+id/old_text"
|
||||
android:layout_width="290dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginLeft="5dp"
|
||||
android:textSize="20dp"
|
||||
android:hint="写下今天的计划吧!"
|
||||
android:singleLine="true"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/finish"
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:background="@drawable/enter"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
@ -0,0 +1,171 @@
|
||||
<?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">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="#fff">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="24sp"
|
||||
android:text="Schedule"
|
||||
android:textColor="#000"
|
||||
android:layout_centerInParent="true"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/back"
|
||||
android:layout_width="30sp"
|
||||
android:layout_height="30sp"
|
||||
android:layout_marginLeft="16sp"
|
||||
android:layout_centerVertical="true"
|
||||
android:background="@drawable/back" />
|
||||
</RelativeLayout>
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/explain_layout"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/explain_one"
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="15dp">
|
||||
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/explain_button_one"
|
||||
android:layout_width="27dp"
|
||||
android:layout_height="27dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:background="@drawable/no" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="290dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginLeft="7dp"
|
||||
android:textSize="16dp"
|
||||
android:textColor="#000"
|
||||
android:text="1.在“今天”中点击右下角按钮即可开始创建当日任务"/>
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/explain_two"
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="12dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/explain_button_two"
|
||||
android:layout_width="27dp"
|
||||
android:layout_height="27dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:background="@drawable/no" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="290dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginLeft="7dp"
|
||||
android:textSize="16dp"
|
||||
android:textColor="#000"
|
||||
android:text="2.在“计划”中可以设定未来想要做的任务,当那一天到来时会自动显示到当天的任务列表中"/>
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/explain_three"
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="12dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/explain_button_three"
|
||||
android:layout_width="27dp"
|
||||
android:layout_height="27dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:background="@drawable/no" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="290dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginLeft="7dp"
|
||||
android:textSize="16dp"
|
||||
android:textColor="#000"
|
||||
android:text="3.如果想要记下一些重要事项,可以使用“便签”功能"/>
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/explain_four"
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="12dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/explain_button_four"
|
||||
android:layout_width="27dp"
|
||||
android:layout_height="27dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:background="@drawable/no" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="290dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginLeft="7dp"
|
||||
android:textSize="16dp"
|
||||
android:textColor="#000"
|
||||
android:text="4.如果想要查询已经完成的任务,可以在“历史”中查看"/>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/explain_five"
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="12dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/explain_button_five"
|
||||
android:layout_width="27dp"
|
||||
android:layout_height="27dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:background="@drawable/no" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="290dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginLeft="7dp"
|
||||
android:textSize="16dp"
|
||||
android:textColor="#000"
|
||||
android:text="5.如果完成了上述任务就可以点击前面的对勾进行消除"/>
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
@ -0,0 +1,65 @@
|
||||
<?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">
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="#fff">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="25dp"
|
||||
android:layout_height="25dp"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginLeft="127dp"
|
||||
android:background="@drawable/history"/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerInParent="true"
|
||||
android:textSize="22sp"
|
||||
android:textColor="#000"
|
||||
android:text="历史" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/back"
|
||||
android:layout_width="30sp"
|
||||
android:layout_height="30sp"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:background="@drawable/back"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/clear"
|
||||
android:layout_width="23sp"
|
||||
android:layout_height="23sp"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginRight="16dp"
|
||||
android:background="@drawable/clear" />
|
||||
</RelativeLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="#e6e6e6"/>
|
||||
|
||||
|
||||
|
||||
<android.support.v7.widget.RecyclerView
|
||||
android:id="@+id/history_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
</android.support.v7.widget.RecyclerView>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|