Skip to content
Snippets Groups Projects
Commit e69ae403 authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

Implement networkconfig setting

parent b9c5850d
Branches
Tags
No related merge requests found
......@@ -7,7 +7,7 @@
<string name="property_ircuser_realname">Realname</string>
<string name="property_ircuser_account">Account</string>
<string name="property_group_ircchannel_channel">Channel</string>
<string name="property_group_ircchannel_channel">Kanal</string>
<string name="property_ircchannel_topic">Thema</string>
<string name="property_ircchannel_topic_action_edit">Thema ändern</string>
<string name="property_ircchannel_topic_default">Kein Thema gesetzt</string>
......
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="settings_networkconfig_title">Network Config</string>
<string name="settings_networkconfig_description" />
<string name="settings_networkconfig_ping_timeout">Erkennung von Ping-Zeitüberschreitungen</string>
<string name="settings_networkconfig_ping_interval">Ping-Intervall</string>
<string name="settings_networkconfig_ping_interval_unit">Sekunden</string>
<string name="settings_networkconfig_max_ping_count">Verbindungstrennung nach</string>
<string name="settings_networkconfig_max_ping_count_unit">verpassten Pings</string>
<string name="settings_networkconfig_auto_who">Automatische Suche nach Nutzerinformationen</string>
<string name="settings_networkconfig_auto_who_interval">Aktualisierungs-Intervall</string>
<string name="settings_networkconfig_auto_who_interval_unit">Sekunden</string>
<string name="settings_networkconfig_auto_who_nick_limit">Ignoriere Chats mit mehr als</string>
<string name="settings_networkconfig_auto_who_nick_limit_unit">Nutzern</string>
<string name="settings_networkconfig_auto_who_delay">Mindestabstand zwischen zwei Abfragen</string>
<string name="settings_networkconfig_auto_who_delay_unit">Sekunden</string>
<string name="settings_networkconfig_standard_ctcp">Standardkonformes CTCP-Verhalten aktivieren</string>
</resources>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Widget.CoreSettings.Wrapper" parent="">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:orientation">vertical</item>
<item name="android:paddingStart">?listPreferredItemPaddingLeft</item>
<item name="android:paddingLeft">?listPreferredItemPaddingLeft</item>
<item name="android:paddingEnd">?listPreferredItemPaddingRight</item>
<item name="android:paddingRight">?listPreferredItemPaddingRight</item>
</style>
<style name="Widget.CoreSettings.PrimaryItemIcon" parent="">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_gravity">center_vertical</item>
<item name="android:layout_marginRight">32dp</item>
<item name="android:layout_marginEnd">32dp</item>
<item name="tint">?colorTextSecondary</item>
</style>
<style name="Widget.CoreSettings.DependentGroup" parent="">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:orientation">vertical</item>
<item name="android:visibility">gone</item>
<item name="android:layout_marginLeft">56dp</item>
<item name="android:layout_marginStart">56dp</item>
</style>
<style name="Widget.CoreSettings.EditTextLayout" parent="">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginLeft">-4dp</item>
<item name="android:layout_marginStart">-4dp</item>
</style>
<style name="Widget.CoreSettings.EditTextSuffix" parent="">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_gravity">bottom|end</item>
<item name="android:layout_marginBottom">12dp</item>
<item name="android:layout_marginEnd">8dp</item>
<item name="android:layout_marginRight">8dp</item>
<item name="android:textColor">?colorTextSecondary</item>
</style>
</resources>
\ No newline at end of file
......@@ -41,6 +41,8 @@
<string name="label_save">Save</string>
<string name="label_select">Select</string>
<string name="label_settings">Settings</string>
<string name="label_settings_client">Client Settings</string>
<string name="label_settings_core">Core Settings</string>
<string name="label_share">Share</string>
<string name="label_share_crashreport">Share Crash Report</string>
<string name="label_show_hidden">Show Hidden</string>
......
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="settings_networkconfig_title">IRC Config</string>
<string name="settings_networkconfig_description" />
<string name="settings_networkconfig_ping_timeout">Ping Timeout Detection</string>
<string name="settings_networkconfig_ping_interval">Ping Interval</string>
<string name="settings_networkconfig_ping_interval_unit">seconds</string>
<string name="settings_networkconfig_max_ping_count">Disconnect after</string>
<string name="settings_networkconfig_max_ping_count_unit">missed pings</string>
<string name="settings_networkconfig_auto_who">Automatic User Info Lookup</string>
<string name="settings_networkconfig_auto_who_interval">Update interval</string>
<string name="settings_networkconfig_auto_who_interval_unit">seconds</string>
<string name="settings_networkconfig_auto_who_nick_limit">Ignore channels with more than</string>
<string name="settings_networkconfig_auto_who_nick_limit_unit">users</string>
<string name="settings_networkconfig_auto_who_delay">Minimum delay between requests</string>
<string name="settings_networkconfig_auto_who_delay_unit">seconds</string>
<string name="settings_networkconfig_standard_ctcp">Standard-Compliant CTCP behavior</string>
</resources>
\ No newline at end of file
......@@ -70,6 +70,66 @@
<item name="android:background">?backgroundMenuItemRounded</item>
</style>
<style name="Widget.CoreSettings.Wrapper" parent="">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:orientation">vertical</item>
<item name="android:paddingLeft">?listPreferredItemPaddingLeft</item>
<item name="android:paddingRight">?listPreferredItemPaddingRight</item>
</style>
<style name="Widget.CoreSettings.PrimaryItem" parent="">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:orientation">vertical</item>
<item name="android:visibility">gone</item>
<item name="android:layout_marginLeft">56dp</item>
</style>
<style name="Widget.CoreSettings.PrimaryItemSwitch" parent="">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">match_parent</item>
<item name="android:layout_gravity">center_vertical</item>
<item name="android:textColor">?colorTextPrimary</item>
</style>
<style name="Widget.CoreSettings.PrimaryItemIcon" parent="">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_gravity">center_vertical</item>
<item name="android:layout_marginRight">32dp</item>
<item name="tint">?colorTextSecondary</item>
</style>
<style name="Widget.CoreSettings.DependentGroup" parent="">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:orientation">vertical</item>
<item name="android:visibility">gone</item>
<item name="android:layout_marginLeft">56dp</item>
</style>
<style name="Widget.CoreSettings.EditTextLayout" parent="">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginLeft">-4dp</item>
</style>
<style name="Widget.CoreSettings.EditText" parent="">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textColor">?colorTextPrimary</item>
</style>
<style name="Widget.CoreSettings.EditTextSuffix" parent="">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_gravity">bottom|end</item>
<item name="android:layout_marginBottom">12dp</item>
<item name="android:layout_marginRight">8dp</item>
<item name="android:textColor">?colorTextSecondary</item>
</style>
<!-- NavigationDrawerLayout -->
<declare-styleable name="NavigationDrawerLayout">
<attr name="insetBackground" />
......
......@@ -91,6 +91,12 @@ class NetworkConfig constructor(
super.setStandardCtcp(standardCtcp)
}
fun copy(): NetworkConfig {
val config = NetworkConfig(SignalProxy.NULL)
config.fromVariantMap(this.toVariantMap())
return config
}
private var _pingTimeoutEnabled: Boolean = true
private var _pingInterval: Int = 30
private var _maxPingCount: Int = 6
......
......@@ -25,11 +25,11 @@ interface ISession : Closeable {
val coreInfo: CoreInfo?
val dccConfig: DccConfig?
val identities: Map<IdentityId, Identity>
fun live_identities(): Observable<Map<IdentityId, Identity>>
fun liveIdentities(): Observable<Map<IdentityId, Identity>>
val ignoreListManager: IgnoreListManager?
val ircListHelper: IrcListHelper?
val networks: Map<NetworkId, Network>
fun live_networks(): Observable<Map<NetworkId, Network>>
fun liveNetworks(): Observable<Map<NetworkId, Network>>
val networkConfig: NetworkConfig?
val rpcHandler: RpcHandler?
val initStatus: Observable<Pair<Int, Int>>
......@@ -57,11 +57,11 @@ interface ISession : Closeable {
override val coreInfo: CoreInfo? = null
override val dccConfig: DccConfig? = null
override val identities: Map<IdentityId, Identity> = emptyMap()
override fun live_identities() = Observable.empty<Map<IdentityId, Identity>>()
override fun liveIdentities() = Observable.empty<Map<IdentityId, Identity>>()
override val ignoreListManager: IgnoreListManager? = null
override val ircListHelper: IrcListHelper? = null
override val networks: Map<NetworkId, Network> = emptyMap()
override fun live_networks() = Observable.empty<Map<NetworkId, Network>>()
override fun liveNetworks() = Observable.empty<Map<NetworkId, Network>>()
override val networkConfig: NetworkConfig? = null
override val initStatus: Observable<Pair<Int, Int>> = Observable.just(0 to 0)
override val lag: Observable<Long> = Observable.just(0L)
......
......@@ -47,14 +47,14 @@ class Session(
override val identities = mutableMapOf<IdentityId, Identity>()
private val live_identities = BehaviorSubject.createDefault(Unit)
override fun live_identities(): Observable<Map<IdentityId, Identity>> = live_identities.map { identities }
override fun liveIdentities(): Observable<Map<IdentityId, Identity>> = live_identities.map { identities }
override val ignoreListManager = IgnoreListManager(this)
override val ircListHelper = IrcListHelper(this)
override val networks = mutableMapOf<NetworkId, Network>()
private val live_networks = BehaviorSubject.createDefault(Unit)
override fun live_networks(): Observable<Map<NetworkId, Network>> = live_networks.map { networks }
override fun liveNetworks(): Observable<Map<NetworkId, Network>> = live_networks.map { networks }
override val networkConfig = NetworkConfig(this)
......
......@@ -100,7 +100,7 @@ class QuasselViewModel : ViewModel() {
val session = sessionOptional.orNull()
val bufferSyncer = session?.bufferSyncer
if (bufferSyncer != null) {
session.live_networks().switchMap { networks ->
session.liveNetworks().switchMap { networks ->
bufferSyncer.liveBufferInfos().switchMap {
val info = bufferSyncer.bufferInfo(id)
val network = networks[info?.networkId]
......@@ -160,7 +160,7 @@ class QuasselViewModel : ViewModel() {
val bufferSyncer = session?.bufferSyncer
val bufferInfo = bufferSyncer?.bufferInfo(buffer)
if (bufferInfo?.type?.hasFlag(Buffer_Type.ChannelBuffer) == true) {
session.live_networks().switchMap { networks ->
session.liveNetworks().switchMap { networks ->
val network = networks[bufferInfo.networkId]
val ircChannel = network?.ircChannel(bufferInfo.bufferName)
if (ircChannel != null) {
......@@ -211,7 +211,7 @@ class QuasselViewModel : ViewModel() {
val bufferSyncer = session?.bufferSyncer
val bufferInfo = bufferSyncer?.bufferInfo(id)
if (bufferSyncer != null) {
session.live_networks().switchMap { networks ->
session.liveNetworks().switchMap { networks ->
bufferSyncer.liveBufferInfos().switchMap { infos ->
if (bufferInfo?.type?.hasFlag(
Buffer_Type.ChannelBuffer
......@@ -319,7 +319,7 @@ class QuasselViewModel : ViewModel() {
val bufferSyncer = session?.bufferSyncer
val bufferViewConfig = bufferViewConfigOptional.orNull()
if (bufferSyncer != null && bufferViewConfig != null) {
session.live_networks().switchMap { networks ->
session.liveNetworks().switchMap { networks ->
val hiddenState = when {
bufferViewConfig.removedBuffers().contains(buffer) ->
BufferHiddenState.HIDDEN_PERMANENT
......@@ -372,7 +372,7 @@ class QuasselViewModel : ViewModel() {
val showHidden = showHiddenRaw ?: false
val config = configOptional.orNull()
if (bufferSyncer != null && config != null) {
session.live_networks().switchMap { networks ->
session.liveNetworks().switchMap { networks ->
config.live_config
.debounce(16, TimeUnit.MILLISECONDS)
.switchMap { currentConfig ->
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment