73
+        switch (v.getId()) {
74
+            case R.id.title_bar_back_layout:
75
+                finish();
76
+                break;
77
+            default:
78
+                break;
79
+        }
80
+    }
81
+}

+ 10 - 4
app/src/main/java/ai/pai/lensman/settings/SettingsActivity.java

@@ -1,12 +1,15 @@
1 1
 package ai.pai.lensman.settings;
2 2
 
3
+import android.content.Intent;
3 4
 import android.os.Bundle;
4 5
 import android.support.annotation.Nullable;
5
-import android.support.v7.app.AppCompatActivity;
6 6
 import android.widget.EditText;
7 7
 import android.widget.Toast;
8 8
 
9 9
 import ai.pai.lensman.R;
10
+import ai.pai.lensman.activities.AboutUsActivity;
11
+import ai.pai.lensman.activities.FeedbackActivity;
12
+import ai.pai.lensman.activities.WebViewActivity;
10 13
 import ai.pai.lensman.base.BaseActivity;
11 14
 import ai.pai.lensman.utils.BoxUrlContainer;
12 15
 import butterknife.BindView;
@@ -33,17 +36,20 @@ public class SettingsActivity extends BaseActivity {
33 36
 
34 37
     @OnClick(R.id.layout_about_us)
35 38
     void go2About(){
36
-
39
+        startActivity(new Intent(this, AboutUsActivity.class));
37 40
     }
38 41
 
39 42
     @OnClick(R.id.layout_contact)
40 43
     void go2Contact(){
41
-
44
+        Intent contactIntent = new Intent(this,WebViewActivity.class);
45
+        contactIntent.putExtra("url","http://pai.ai/page/contact_us");
46
+        contactIntent.putExtra("title",getString(R.string.contact_us));
47
+        startActivity(contactIntent);
42 48
     }
43 49
 
44 50
     @OnClick(R.id.layout_feedback)
45 51
     void go2Feedback(){
46
-
52
+        startActivity(new Intent(this, FeedbackActivity.class));
47 53
     }
48 54
 
49 55
     @OnClick(R.id.btn_confirm_ip)

+ 2 - 0
app/src/main/java/ai/pai/lensman/utils/UrlContainer.java

@@ -39,5 +39,7 @@ public class UrlContainer {
39 39
 
40 40
     public static final String QUERY_ORDER_URL = HOST_URL+"l/query";
41 41
 
42
+    public static final String FEEDBACK_URL = HOST_URL +"op/feedback";
43
+
42 44
 
43 45
 }

BIN
app/src/main/res/drawable-xhdpi/about_contract.png


BIN
app/src/main/res/drawable-xhdpi/about_update_app.png


BIN
app/src/main/res/drawable-xhdpi/logo_in_about.png


+ 9 - 0
app/src/main/res/drawable/send_btn_bg_selector.xml

@@ -0,0 +1,9 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
3
+
4
+
5
+    <item android:drawable="@color/colorPrimary" android:state_selected="true"></item>
6
+    <item android:drawable="@color/colorPrimary" android:state_focused="true"></item>
7
+    <item android:drawable="@color/silver" android:state_enabled="false" />
8
+    <item android:drawable="@color/colorPrimary"></item>
9
+</selector>

+ 117 - 0
app/src/main/res/layout/activity_about_us.xml

@@ -0,0 +1,117 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3
+    android:layout_width="match_parent"
4
+    android:layout_height="match_parent"
5
+    android:background="@color/white"
6
+    android:orientation="vertical">
7
+
8
+    <RelativeLayout
9
+        android:id="@+id/title_layout"
10
+        android:layout_width="match_parent"
11
+        android:layout_height="wrap_content"
12
+        android:background="@color/colorPrimaryDark">
13
+        <include layout="@layout/title_bar_with_back_and_option" />
14
+    </RelativeLayout>
15
+
16
+    <RelativeLayout
17
+        android:layout_width="match_parent"
18
+        android:layout_height="215dp"
19
+        android:gravity="center_horizontal">
20
+
21
+        <ImageView
22
+            android:layout_width="140dp"
23
+            android:layout_height="140dp"
24
+            android:layout_marginTop="51dp"
25
+            android:src="@drawable/logo_in_about"/>
26
+    </RelativeLayout>
27
+
28
+    <LinearLayout
29
+        android:id="@+id/layout_check_update"
30
+        android:layout_width="match_parent"
31
+        android:layout_height="44dp"
32
+        android:paddingLeft="12dp"
33
+        android:orientation="horizontal"
34
+        android:background="@color/white"
35
+        android:gravity="center_vertical">
36
+
37
+        <ImageView
38
+            android:layout_width="32dp"
39
+            android:layout_height="32dp"
40
+            android:src="@drawable/about_update_app"
41
+            />
42
+
43
+        <TextView
44
+            android:layout_width="0dp"
45
+            android:layout_weight="1"
46
+            android:layout_height="wrap_content"
47
+            android:text="@string/check_update"
48
+            android:textSize="16sp"
49
+            android:textColor="@color/dark_grey"
50
+            android:layout_marginLeft="10dp"/>
51
+
52
+        <ImageView
53
+            android:layout_width="wrap_content"
54
+            android:layout_height="wrap_content"
55
+            android:layout_marginRight="12dp"
56
+            android:layout_gravity="right|center_vertical"
57
+            android:src="@drawable/arrow_right"/>
58
+    </LinearLayout>
59
+
60
+
61
+    <LinearLayout
62
+        android:id="@+id/layout_about_declare"
63
+        android:layout_width="match_parent"
64
+        android:layout_height="44dp"
65
+        android:paddingLeft="12dp"
66
+        android:orientation="horizontal"
67
+        android:background="@color/white"
68
+        android:gravity="center_vertical">
69
+
70
+        <ImageView
71
+            android:layout_width="32dp"
72
+            android:layout_height="32dp"
73
+            android:src="@drawable/about_contract"
74
+            />
75
+
76
+        <TextView
77
+            android:layout_width="0dp"
78
+            android:layout_weight="1"
79
+            android:layout_height="wrap_content"
80
+            android:text="@string/contract"
81
+            android:textSize="16sp"
82
+            android:textColor="@color/dark_grey"
83
+            android:layout_marginLeft="10dp"/>
84
+
85
+        <ImageView
86
+            android:layout_width="wrap_content"
87
+            android:layout_height="wrap_content"
88
+            android:layout_marginRight="12dp"
89
+            android:layout_gravity="right|center_vertical"
90
+            android:src="@drawable/arrow_right"/>
91
+    </LinearLayout>
92
+
93
+
94
+    <LinearLayout
95
+        android:layout_width="match_parent"
96
+        android:layout_height="match_parent"
97
+        android:gravity="center|bottom"
98
+        android:paddingBottom="8dp"
99
+        android:orientation="vertical">
100
+
101
+        <TextView
102
+            android:layout_width="wrap_content"
103
+            android:layout_height="wrap_content"
104
+            android:textColor="@color/grey"
105
+            android:textSize="14sp"
106
+            android:text="@string/copyright"/>
107
+
108
+        <TextView
109
+            android:layout_width="wrap_content"
110
+            android:layout_height="wrap_content"
111
+            android:padding="4dp"
112
+            android:textColor="@color/grey"
113
+            android:textSize="14sp"
114
+            android:text="@string/company_name"/>
115
+
116
+    </LinearLayout>
117
+</LinearLayout>

+ 41 - 0
app/src/main/res/layout/activity_feedback.xml

@@ -0,0 +1,41 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3
+    android:layout_width="match_parent"
4
+    android:layout_height="match_parent"
5
+    android:background="@color/background_light_grey_color"
6
+    android:orientation="vertical">
7
+
8
+    <RelativeLayout
9
+        android:id="@+id/title_layout"
10
+        android:layout_width="match_parent"
11
+        android:layout_height="wrap_content"
12
+        android:background="@color/colorPrimaryDark">
13
+        <include layout="@layout/title_bar_with_back_and_option" />
14
+    </RelativeLayout>
15
+
16
+    <EditText
17
+        android:id="@+id/et_feedback_content"
18
+        android:layout_width="match_parent"
19
+        android:textSize="14sp"
20
+        android:textColorHint="@color/grey"
21
+        android:background="@color/white"
22
+        android:textColor="@color/dark_grey"
23
+        android:hint="@string/feedback_hint"
24
+        android:paddingTop="10dp"
25
+        android:paddingLeft="12dp"
26
+        android:gravity="top"
27
+        android:layout_height="120dp" />
28
+
29
+    <Button
30
+        android:id="@+id/btn_feedback_send"
31
+        android:layout_width="match_parent"
32
+        android:layout_height="48dp"
33
+        android:layout_marginTop="30dp"
34
+        android:textColor="@color/white"
35
+        android:textSize="20sp"
36
+        android:enabled="false"
37
+        android:background="@drawable/send_btn_bg_selector"
38
+        android:text="@string/send"/>
39
+
40
+
41
+</LinearLayout>

+ 31 - 0
app/src/main/res/layout/activity_webview.xml

@@ -0,0 +1,31 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
3
+    android:layout_width="match_parent"
4
+    android:layout_height="match_parent"
5
+    xmlns:progress="http://schemas.android.com/apk/res-auto"
6
+    android:background="@color/background_light_grey_color">
7
+
8
+    <RelativeLayout
9
+        android:id="@+id/title_layout"
10
+        android:layout_width="match_parent"
11
+        android:layout_height="wrap_content"
12
+        android:background="@color/colorPrimaryDark">
13
+        <include layout="@layout/title_bar_with_back_and_option" />
14
+    </RelativeLayout>
15
+
16
+    <WebView
17
+        android:id="@+id/webview_contract"
18
+        android:layout_width="match_parent"
19
+        android:layout_height="match_parent"
20
+        android:layout_below="@id/title_layout"/>
21
+
22
+    <com.android.views.progressbar.ProgressWheel
23
+        android:id="@+id/wheel_wait_http"
24
+        android:layout_width="80dp"
25
+        android:layout_height="80dp"
26
+        android:layout_centerInParent="true"
27
+        android:visibility="gone"
28
+        progress:textColor="@color/white"
29
+        progress:barColor="@color/colorPrimary"/>
30
+
31
+</RelativeLayout>

+ 51 - 0
app/src/main/res/layout/title_bar_with_back_and_option.xml

@@ -0,0 +1,51 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3
+    android:id="@+id/title_bar_with_back_btn"
4
+    android:layout_width="match_parent"
5
+    android:layout_height="@dimen/action_bar_height"
6
+    android:orientation="horizontal"
7
+    android:background="@color/colorPrimary">
8
+
9
+    <LinearLayout
10
+        android:id="@+id/title_bar_back_layout"
11
+        android:layout_width="70dp"
12
+        android:layout_height="match_parent"
13
+        android:gravity="center_vertical"
14
+        android:orientation="horizontal"
15
+        android:paddingLeft="12dp">
16
+
17
+        <ImageView
18
+            android:layout_width="32dp"
19
+            android:layout_height="32dp"
20
+            android:src="@drawable/back_selector" />
21
+
22
+    </LinearLayout>
23
+
24
+    <TextView
25
+        android:id="@+id/title_bar_middle_txt"
26
+        android:layout_width="0dp"
27
+        android:layout_height="match_parent"
28
+        android:layout_weight="1"
29
+        android:singleLine="true"
30
+        android:gravity="center"
31
+        android:paddingLeft="10dp"
32
+        android:paddingRight="10dp"
33
+        android:textColor="@color/white"
34
+        android:textSize="@dimen/action_bar_title_large_text_size" />
35
+
36
+    <LinearLayout
37
+        android:id="@+id/title_bar_option_layout"
38
+        android:layout_width="70dp"
39
+        android:layout_height="match_parent"
40
+        android:gravity="center_vertical|right"
41
+        android:orientation="horizontal"
42
+        android:paddingRight="12dp">
43
+
44
+        <ImageView
45
+            android:layout_width="32dp"
46
+            android:layout_height="32dp"
47
+            android:src="@drawable/option" />
48
+
49
+    </LinearLayout>
50
+
51
+</LinearLayout>

+ 1 - 0
app/src/main/res/values/colors.xml

@@ -4,6 +4,7 @@
4 4
     <color name="colorPrimaryDark">#2E78E5</color>
5 5
     <color name="colorAccent">#0BBE06</color>
6 6
 
7
+    <color name="silver">#C0C0C0</color>
7 8
     <color name="light_blue">#1E90FF</color>
8 9
     <color name="white">#ffffffff</color>
9 10
     <color name="transparent">#00000000</color>

+ 16 - 3
app/src/main/res/values/strings.xml

@@ -1,6 +1,11 @@
1 1
 <resources>
2 2
     <string name="app_name">拍爱</string>
3 3
     <string name="bar_app_name">拍爱摄影师版</string>
4
+
5
+    <string name="version_text">拍爱 V1.0</string>
6
+    <string name="copyright">Copyright © 2016 </string>
7
+    <string name="company_name">北京佳艺徕经贸有限责任公司</string>
8
+
4 9
     <string name="bt_connected">已连接</string>
5 10
     <string name="bt_disconnected">已断开</string>
6 11
     <string name="briefs">简报</string>
@@ -118,13 +123,21 @@
118 123
     <string name="price_manage">价格管理</string>
119 124
 
120 125
     <string name="platform_price_rule">分成及结算规则</string>
121
-    
126
+
122 127
     <string name="feedback">意见反馈</string>
123
-    
128
+
124 129
     <string name="contact_us">联系我们</string>
125
-    
130
+
126 131
     <string name="about_us">关于我们</string>
127 132
 
128 133
     <string name="box_set_ip">BOX IP设置</string>
129 134
 
135
+    <string name="send">发送</string>
136
+    <string name="feedback_hint">您的建议是我们前进的动力</string>
137
+    <string name="thank_feedback">已发送,感谢您的宝贵意见</string>
138
+    <string name="check_update">检查更新</string>
139
+    <string name="contract">用户协议</string>
140
+
141
+    <string name="check_update_processing">正在检查更新</string>
142
+
130 143
 </resources>

pai2 - Gogs: Go Git Service

拍爱

0044_auto_20180103_0446.py 8.2KB

    # -*- coding: utf-8 -*- # Generated by Django 1.11.3 on 2018-01-02 20:46 from __future__ import unicode_literals from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ ('group', '0043_auto_20180101_2220'), ] operations = [ migrations.AlterField( model_name='groupinfo', name='admin_id', field=models.CharField(blank=True, db_index=True, help_text='\u7528\u6237\u552f\u4e00\u6807\u8bc6', max_length=32, null=True, verbose_name='admin_id'), ), migrations.AlterField( model_name='groupinfo', name='attentions_path', field=models.CharField(blank=True, help_text='\u6ce8\u610f\u4e8b\u9879\u7167\u7247\u5b58\u653e\u8def\u5f84', max_length=32, null=True, verbose_name='attentions_path'), ), migrations.AlterField( model_name='groupinfo', name='gather_screenshot', field=models.CharField(blank=True, help_text='\u65c5\u6e38\u56e2\u96c6\u5408\u5730\u70b9\u622a\u56fe', max_length=32, null=True, verbose_name='gather_screenshot'), ), migrations.AlterField( model_name='groupinfo', name='group_id', field=models.CharField(blank=True, db_index=True, help_text='\u7fa4\u7ec4\u552f\u4e00\u6807\u8bc6', max_length=32, null=True, unique=True, verbose_name='group_id'), ), migrations.AlterField( model_name='groupinfo', name='phone', field=models.CharField(blank=True, help_text='\u5bfc\u6e38\u7535\u8bdd', max_length=16, null=True, verbose_name='phone'), ), migrations.AlterField( model_name='groupinfo', name='schedules_path', field=models.CharField(blank=True, help_text='\u884c\u7a0b\u5b89\u6392\u7167\u7247\u5b58\u653e\u8def\u5f84', max_length=32, null=True, verbose_name='schedules_path'), ), migrations.AlterField( model_name='groupinfo', name='session_id', field=models.CharField(blank=True, db_index=True, help_text='\u7167\u7247\u7ec4\u552f\u4e00\u6807\u8bc6', max_length=32, null=True, verbose_name='session_id'), ), migrations.AlterField( model_name='groupphotoinfo', name='group_id', field=models.CharField(blank=True, db_index=True, help_text='\u7fa4\u7ec4\u552f\u4e00\u6807\u8bc6', max_length=32, null=True, verbose_name='group_id'), ), migrations.AlterField( model_name='groupphotoinfo', name='lensman_id', field=models.CharField(blank=True, db_index=True, help_text='\u6444\u5f71\u5e08\u552f\u4e00\u6807\u8bc6\uff0c\u540c PhotosInfo \u8868', max_length=32, null=True, verbose_name='lensman_id'), ), migrations.AlterField( model_name='groupphotoinfo', name='lensman_photo_id', field=models.CharField(blank=True, db_index=True, help_text='\u6444\u5f71\u5e08\u7167\u7247\u552f\u4e00\u6807\u8bc6\uff0c\u540c PhotosInfo \u8868', max_length=32, null=True, verbose_name='lensman_photo_id'), ), migrations.AlterField( model_name='groupphotoinfo', name='photo_md5', field=models.CharField(blank=True, db_index=True, help_text='\u7167\u7247 MD5', max_length=32, null=True, verbose_name='photo_md5'), ), migrations.AlterField( model_name='groupphotoinfo', name='photo_path', field=models.CharField(blank=True, help_text='\u7167\u7247\u5b58\u653e\u8def\u5f84', max_length=32, null=True, verbose_name='photo_path'), ), migrations.AlterField( model_name='groupphotoinfo', name='photo_thumbnail2_path', field=models.CharField(blank=True, help_text='\u7167\u7247\u7f29\u7565\u56fe\u5b58\u653e\u8def\u5f84', max_length=32, null=True, verbose_name='photo_thumbnail2_path'), ), migrations.AlterField( model_name='groupphotoinfo', name='photo_thumbnail_path', field=models.CharField(blank=True, help_text='\u7167\u7247\u7f29\u7565\u56fe\u5b58\u653e\u8def\u5f84', max_length=32, null=True, verbose_name='photo_thumbnail_path'), ), migrations.AlterField( model_name='groupphotoinfo', name='session_id', field=models.CharField(blank=True, db_index=True, help_text='\u7167\u7247\u7ec4\u552f\u4e00\u6807\u8bc6\uff0c\u540c PhotosInfo \u8868', max_length=32, null=True, verbose_name='session_id'), ), migrations.AlterField( model_name='groupphotoinfo', name='user_id', field=models.CharField(blank=True, db_index=True, help_text='\u7528\u6237\u552f\u4e00\u6807\u8bc6', max_length=32, null=True, verbose_name='user_id'), ), migrations.AlterField( model_name='groupphotoorderinfo', name='l_photo_path', field=models.CharField(blank=True, help_text='\u7167\u7247\u5b58\u653e\u8def\u5f84\uff0c\u7f8e\u5316\u5927\u56fe', max_length=32, null=True, verbose_name='l_photo_path'), ), migrations.AlterField( model_name='groupphotoorderinfo', name='lensman_photo_id', field=models.CharField(blank=True, db_index=True, help_text='\u6444\u5f71\u5e08\u7167\u7247\u552f\u4e00\u6807\u8bc6\uff0c\u540c PhotosInfo \u8868', max_length=32, null=True, verbose_name='lensman_photo_id'), ), migrations.AlterField( model_name='groupphotoorderinfo', name='m_photo_path', field=models.CharField(blank=True, help_text='\u7167\u7247\u5b58\u653e\u8def\u5f84\uff0cBox\u4e0a\u4f20\uff0c\u65e0\u6c34\u5370', max_length=32, null=True, verbose_name='m_photo_path'), ), migrations.AlterField( model_name='groupphotoorderinfo', name='r_photo_path', field=models.CharField(blank=True, help_text='\u7167\u7247\u5b58\u653e\u8def\u5f84\uff0c\u9ad8\u6e05\u5927\u56fe', max_length=32, null=True, verbose_name='r_photo_path'), ), migrations.AlterField( model_name='groupuserinfo', name='group_id', field=models.CharField(blank=True, db_index=True, help_text='\u7fa4\u7ec4\u552f\u4e00\u6807\u8bc6', max_length=32, null=True, verbose_name='group_id'), ), migrations.AlterField( model_name='groupuserinfo', name='phone', field=models.CharField(blank=True, help_text='\u7528\u6237\u7535\u8bdd', max_length=16, null=True, verbose_name='phone'), ), migrations.AlterField( model_name='groupuserinfo', name='user_id', field=models.CharField(blank=True, db_index=True, help_text='\u7528\u6237\u552f\u4e00\u6807\u8bc6', max_length=32, null=True, verbose_name='user_id'), ), migrations.AlterField( model_name='photocommentinfo', name='photo_id', field=models.CharField(blank=True, db_index=True, help_text='\u98de\u56fe\u552f\u4e00\u6807\u8bc6', max_length=32, null=True, verbose_name='photo_id'), ), migrations.AlterField( model_name='photocommentinfo', name='to_uid', field=models.CharField(blank=True, db_index=True, help_text='\u88ab\u8bc4\u8bba\u7528\u6237\u552f\u4e00\u6807\u8bc6', max_length=32, null=True, verbose_name='to_uid'), ), migrations.AlterField( model_name='photocommentinfo', name='user_id', field=models.CharField(blank=True, db_index=True, help_text='\u7528\u6237\u552f\u4e00\u6807\u8bc6', max_length=32, null=True, verbose_name='user_id'), ), migrations.AlterField( model_name='photothumbupinfo', name='photo_id', field=models.CharField(blank=True, db_index=True, help_text='\u98de\u56fe\u552f\u4e00\u6807\u8bc6', max_length=32, null=True, verbose_name='photo_id'), ), migrations.AlterField( model_name='photothumbupinfo', name='user_id', field=models.CharField(blank=True, db_index=True, help_text='\u7528\u6237\u552f\u4e00\u6807\u8bc6', max_length=32, null=True, verbose_name='user_id'), ), ]