Skip to content

Commit 8d99e22

Browse files
committed
default pop action
1 parent 370222f commit 8d99e22

15 files changed

+224
-92
lines changed

app/src/main/java/com/shuyu/github/kotlin/common/utils/CommonUtils.kt

+16
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import android.graphics.Point
44
import android.widget.ImageView
55
import com.shuyu.github.kotlin.GSYGithubApplication
66
import com.shuyu.github.kotlin.R
7+
import com.shuyu.github.kotlin.common.config.AppConfig
78
import com.shuyu.github.kotlin.common.style.image.BlurTransformation
89
import com.shuyu.gsyimageloader.GSYImageLoaderManager
910
import com.shuyu.gsyimageloader.GSYLoadOption
@@ -80,4 +81,19 @@ object CommonUtils {
8081
else -> getDateStr(date)
8182
}
8283
}
84+
85+
86+
fun getReposHtmlUrl(userName: String, reposName: String): String =
87+
AppConfig.GITHUB_BASE_URL + userName + "/" + reposName
88+
89+
fun getIssueHtmlUrl(userName: String, reposName: String, number: String): String =
90+
AppConfig.GITHUB_BASE_URL + userName + "/" + reposName + "/issues/" + number
91+
92+
fun getUserHtmlUrl(userName: String) =
93+
AppConfig.GITHUB_BASE_URL + userName
94+
95+
fun getFileHtmlUrl(userName: String, reposName: String, path: String, branch: String = "master"): String =
96+
AppConfig.GITHUB_BASE_URL + userName + "/" + reposName + "/blob/" + branch + "/" + path
97+
98+
8399
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
package com.shuyu.github.kotlin.module.base
2+
3+
import android.os.Bundle
4+
import android.support.v7.app.AppCompatActivity
5+
import android.support.v7.widget.PopupMenu
6+
import android.support.v7.widget.Toolbar
7+
import android.view.Gravity
8+
import android.view.Menu
9+
import android.view.MenuItem
10+
import com.shuyu.github.kotlin.R
11+
12+
/**
13+
* Created by guoshuyu
14+
* Date: 2018-10-24
15+
*/
16+
abstract class BaseActivity : AppCompatActivity(), Toolbar.OnMenuItemClickListener, PopupMenu.OnMenuItemClickListener {
17+
18+
19+
override fun onCreate(savedInstanceState: Bundle?) {
20+
super.onCreate(savedInstanceState)
21+
setContentView(getLayoutId())
22+
initTitle()
23+
}
24+
25+
override fun onOptionsItemSelected(item: MenuItem?): Boolean {
26+
when (item?.itemId) {
27+
android.R.id.home -> {
28+
finish()
29+
}
30+
}
31+
return true
32+
}
33+
34+
override fun onCreateOptionsMenu(menu: Menu): Boolean {
35+
menuInflater.inflate(R.menu.toolbar_default_menu, menu)
36+
return true
37+
}
38+
39+
override fun onMenuItemClick(item: MenuItem?): Boolean {
40+
when (item?.itemId) {
41+
R.id.action_more -> {
42+
val pop = PopupMenu(this, getToolBar())
43+
pop.menuInflater.inflate(R.menu.toolbar_default_pop_menu, pop.menu)
44+
pop.gravity = Gravity.END
45+
pop.show()
46+
pop.setOnMenuItemClickListener(this)
47+
}
48+
R.id.action_browser -> {
49+
actionOpenByBrowser()
50+
}
51+
R.id.action_copy -> {
52+
actionCopy()
53+
}
54+
R.id.action_share -> {
55+
actionShare()
56+
}
57+
}
58+
return true
59+
}
60+
61+
open fun actionOpenByBrowser() {
62+
}
63+
64+
open fun actionCopy() {
65+
}
66+
67+
open fun actionShare() {
68+
}
69+
70+
71+
/**
72+
* 初始化title
73+
*/
74+
private fun initTitle() {
75+
setSupportActionBar(getToolBar())
76+
val actionBar = supportActionBar
77+
if (actionBar != null) {
78+
actionBar.setDisplayHomeAsUpEnabled(true)
79+
actionBar.setDisplayShowTitleEnabled(false)
80+
}
81+
getToolBar().title = getToolBarTitle()
82+
getToolBar().setOnMenuItemClickListener(this)
83+
}
84+
85+
abstract fun getToolBarTitle(): String
86+
87+
abstract fun getToolBar(): Toolbar
88+
89+
abstract fun getLayoutId(): Int
90+
}
91+

app/src/main/java/com/shuyu/github/kotlin/module/base/BaseFragment.kt

+12
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,18 @@ abstract class BaseFragment<T : ViewDataBinding> : Fragment(), Injectable {
3636
return binding?.root
3737
}
3838

39+
open fun actionOpenByBrowser() {
40+
41+
}
42+
43+
open fun actionCopy() {
44+
45+
}
46+
47+
open fun actionShare() {
48+
49+
}
50+
3951
abstract fun onCreateView(mainView: View?)
4052

4153
abstract fun getLayoutId(): Int

app/src/main/java/com/shuyu/github/kotlin/module/base/BaseFragmentActivity.kt

+14-53
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@ import android.support.v4.app.FragmentTransaction
99
import android.support.v7.app.AppCompatActivity
1010
import android.support.v7.widget.PopupMenu
1111
import android.support.v7.widget.Toolbar
12-
import android.view.Gravity
13-
import android.view.Menu
14-
import android.view.MenuItem
1512
import com.shuyu.github.kotlin.R
1613
import dagger.android.DispatchingAndroidInjector
1714
import dagger.android.support.HasSupportFragmentInjector
@@ -22,75 +19,39 @@ import javax.inject.Inject
2219
* Created by guoshuyu
2320
* Date: 2018-10-24
2421
*/
25-
abstract class BaseFragmentActivity : AppCompatActivity(), HasSupportFragmentInjector, Toolbar.OnMenuItemClickListener, PopupMenu.OnMenuItemClickListener {
22+
abstract class BaseFragmentActivity : BaseActivity(), HasSupportFragmentInjector, Toolbar.OnMenuItemClickListener, PopupMenu.OnMenuItemClickListener {
2623

2724
@Inject
2825
lateinit var dispatchingAndroidInjector: DispatchingAndroidInjector<Fragment>
2926

27+
private var fragment: BaseFragment<*>? = null
28+
3029
override fun onCreate(savedInstanceState: Bundle?) {
3130
super.onCreate(savedInstanceState)
32-
setContentView(R.layout.activity_fragment_container)
33-
34-
setSupportActionBar(activity_fragment_container_toolbar)
35-
val actionBar = supportActionBar
36-
if (actionBar != null) {
37-
actionBar.setDisplayHomeAsUpEnabled(true)
38-
actionBar.setDisplayShowTitleEnabled(false)
39-
}
40-
41-
activity_fragment_container_toolbar.setOnMenuItemClickListener(this)
4231

43-
activity_fragment_container_toolbar.title = getToolBarTitle()
44-
45-
addFragment(getInitFragment(), R.id.activity_fragment_container_id)
32+
fragment = getInitFragment()
33+
addFragment(fragment!!, R.id.activity_fragment_container_id)
4634
}
4735

48-
override fun onOptionsItemSelected(item: MenuItem?): Boolean {
49-
when (item?.itemId) {
50-
android.R.id.home -> {
51-
finish()
52-
}
53-
}
54-
return true
55-
}
36+
override fun getLayoutId(): Int = R.layout.activity_fragment_container
5637

57-
override fun onCreateOptionsMenu(menu: Menu): Boolean {
58-
menuInflater.inflate(R.menu.toolbar_default_menu, menu)
59-
return true
38+
override fun actionOpenByBrowser() {
39+
fragment?.actionOpenByBrowser()
6040
}
6141

62-
override fun onMenuItemClick(item: MenuItem?): Boolean {
63-
when (item?.itemId) {
64-
R.id.action_more -> {
65-
val pop = PopupMenu(this, activity_fragment_container_toolbar)
66-
pop.menuInflater.inflate(R.menu.toolbar_default_pop_menu, pop.menu)
67-
pop.gravity = Gravity.END
68-
pop.show()
69-
pop.setOnMenuItemClickListener(this)
70-
}
71-
R.id.action_browser -> {
72-
actionOpenByBrowser()
73-
}
74-
R.id.action_copy -> {
75-
actionCopy()
76-
}
77-
}
78-
return true
42+
override fun actionCopy() {
43+
fragment?.actionCopy()
7944
}
8045

81-
open fun actionOpenByBrowser() {
82-
46+
override fun actionShare() {
47+
fragment?.actionShare()
8348
}
8449

85-
open fun actionCopy() {
86-
87-
}
50+
override fun getToolBar(): Toolbar = activity_fragment_container_toolbar
8851

8952
override fun supportFragmentInjector() = dispatchingAndroidInjector
9053

91-
abstract fun getToolBarTitle(): String
92-
93-
abstract fun getInitFragment(): Fragment
54+
abstract fun getInitFragment(): BaseFragment<*>
9455
}
9556

9657
fun Context.startActivity(cls: Class<*>) {

app/src/main/java/com/shuyu/github/kotlin/module/code/CodeDetailActivity.kt

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.shuyu.github.kotlin.module.code
22

3-
import android.support.v4.app.Fragment
43
import com.alibaba.android.arouter.facade.Postcard
54
import com.alibaba.android.arouter.facade.annotation.Autowired
65
import com.alibaba.android.arouter.facade.annotation.Route
@@ -42,7 +41,6 @@ class CodeDetailActivity : BaseFragmentActivity(), ARouterInjectable {
4241
@JvmField
4342
var url = ""
4443

45-
4644
@Autowired
4745
@JvmField
4846
var reposName = ""
@@ -54,7 +52,7 @@ class CodeDetailActivity : BaseFragmentActivity(), ARouterInjectable {
5452

5553
override fun getToolBarTitle(): String = path
5654

57-
override fun getInitFragment(): Fragment = getRouterNavigation(ARouterAddress.CodeDetailFragment, userName, reposName, path, url).navigation() as CodeDetailFragment
55+
override fun getInitFragment(): CodeDetailFragment = getRouterNavigation(ARouterAddress.CodeDetailFragment, userName, reposName, path, url).navigation() as CodeDetailFragment
5856

5957

6058
}

app/src/main/java/com/shuyu/github/kotlin/module/code/CodeDetailFragment.kt

+19
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,16 @@ import android.view.View
88
import com.alibaba.android.arouter.facade.annotation.Autowired
99
import com.alibaba.android.arouter.facade.annotation.Route
1010
import com.shuyu.github.kotlin.R
11+
import com.shuyu.github.kotlin.common.utils.CommonUtils
12+
import com.shuyu.github.kotlin.common.utils.copy
1113
import com.shuyu.github.kotlin.databinding.FragmentCodeDetailBinding
1214
import com.shuyu.github.kotlin.di.ARouterInjectable
1315
import com.shuyu.github.kotlin.module.ARouterAddress
1416
import com.shuyu.github.kotlin.module.base.BaseFragment
1517
import kotlinx.android.synthetic.main.fragment_code_detail.*
18+
import org.jetbrains.anko.browse
19+
import org.jetbrains.anko.share
20+
import org.jetbrains.anko.toast
1621
import javax.inject.Inject
1722

1823
/**
@@ -72,4 +77,18 @@ class CodeDetailFragment : BaseFragment<FragmentCodeDetailBinding>(), ARouterInj
7277
}
7378

7479
override fun getLayoutId(): Int = R.layout.fragment_code_detail
80+
81+
82+
override fun actionOpenByBrowser() {
83+
context?.browse(CommonUtils.getFileHtmlUrl(userName, reposName, url))
84+
}
85+
86+
override fun actionCopy() {
87+
context?.copy(CommonUtils.getFileHtmlUrl(userName, reposName, url))
88+
context?.toast(R.string.hadCopy)
89+
}
90+
91+
override fun actionShare() {
92+
context?.share(CommonUtils.getFileHtmlUrl(userName, reposName, url))
93+
}
7594
}

app/src/main/java/com/shuyu/github/kotlin/module/issue/IssueDetailActivity.kt

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.shuyu.github.kotlin.module.issue
22

33
import android.os.Bundle
4-
import android.support.v4.app.Fragment
54
import android.view.Menu
65
import android.view.MenuItem
76
import com.alibaba.android.arouter.facade.Postcard
@@ -68,7 +67,7 @@ class IssueDetailActivity : BaseFragmentActivity(), ARouterInjectable {
6867
return super.onMenuItemClick(item)
6968
}
7069

71-
override fun getInitFragment(): Fragment {
70+
override fun getInitFragment(): IssueDetailFragment {
7271
return getRouterNavigation(ARouterAddress.IssueDetailFragment, userName, reposName, issueNumber).navigation() as IssueDetailFragment
7372
}
7473

app/src/main/java/com/shuyu/github/kotlin/module/issue/IssueDetailFragment.kt

+17
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import com.alibaba.android.arouter.facade.annotation.Autowired
1010
import com.alibaba.android.arouter.facade.annotation.Route
1111
import com.shuyu.commonrecycler.BindSuperAdapterManager
1212
import com.shuyu.github.kotlin.R
13+
import com.shuyu.github.kotlin.common.utils.CommonUtils
14+
import com.shuyu.github.kotlin.common.utils.copy
1315
import com.shuyu.github.kotlin.databinding.FragmentIssueDetailBinding
1416
import com.shuyu.github.kotlin.databinding.LayoutIssueHeaderBinding
1517
import com.shuyu.github.kotlin.di.ARouterInjectable
@@ -20,6 +22,9 @@ import com.shuyu.github.kotlin.module.person.PersonActivity
2022
import com.shuyu.github.kotlin.ui.holder.IssueCommentHolder
2123
import com.shuyu.github.kotlin.ui.holder.base.GSYDataBindingComponent
2224
import kotlinx.android.synthetic.main.fragment_issue_detail.*
25+
import org.jetbrains.anko.browse
26+
import org.jetbrains.anko.share
27+
import org.jetbrains.anko.toast
2328

2429
/**
2530
* Created by guoshuyu
@@ -96,4 +101,16 @@ class IssueDetailFragment : BaseListFragment<FragmentIssueDetailBinding, IssueDe
96101
}
97102

98103

104+
override fun actionOpenByBrowser() {
105+
context?.browse(CommonUtils.getIssueHtmlUrl(userName, reposName, issueNumber.toString()))
106+
}
107+
108+
override fun actionCopy() {
109+
context?.copy(CommonUtils.getIssueHtmlUrl(userName, reposName, issueNumber.toString()))
110+
context?.toast(R.string.hadCopy)
111+
}
112+
113+
override fun actionShare() {
114+
context?.share(CommonUtils.getIssueHtmlUrl(userName, reposName, issueNumber.toString()))
115+
}
99116
}

app/src/main/java/com/shuyu/github/kotlin/module/list/GeneralListActivity.kt

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.shuyu.github.kotlin.module.list
22

33
import android.os.Bundle
4-
import android.support.v4.app.Fragment
54
import android.view.Menu
65
import android.view.MenuItem
76
import com.alibaba.android.arouter.facade.Postcard
@@ -67,7 +66,7 @@ class GeneralListActivity : BaseFragmentActivity(), ARouterInjectable {
6766
super.onCreate(savedInstanceState)
6867
}
6968

70-
override fun getInitFragment(): Fragment {
69+
override fun getInitFragment(): GeneralListFragment {
7170
fragment = getRouterNavigation(ARouterAddress.GeneralListFragment, userName, reposName, title, requestType, needFilter).navigation() as GeneralListFragment
7271
return fragment!!
7372
}

app/src/main/java/com/shuyu/github/kotlin/module/notify/NotifyActivity.kt

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.shuyu.github.kotlin.module.notify
22

3-
import android.support.v4.app.Fragment
43
import android.view.Menu
54
import android.view.MenuItem
65
import com.alibaba.android.arouter.facade.Postcard
@@ -36,7 +35,7 @@ class NotifyActivity : BaseFragmentActivity(), ARouterInjectable {
3635

3736
override fun getToolBarTitle(): String = getString(R.string.notify)
3837

39-
override fun getInitFragment(): Fragment {
38+
override fun getInitFragment(): NotifyFragment {
4039
fragment = getRouterNavigation(ARouterAddress.NotifyFragment).navigation() as NotifyFragment
4140
return fragment!!
4241
}

0 commit comments

Comments
 (0)