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

Finish autocomplete implementation

parent 358fe9b8
No related branches found
No related tags found
No related merge requests found
......@@ -3,116 +3,19 @@ package de.kuschku.quasseldroid.dagger
import android.content.Context
import dagger.Module
import dagger.Provides
import de.kuschku.quasseldroid.R
import de.kuschku.quasseldroid.settings.AppearanceSettings
import de.kuschku.quasseldroid.settings.AutoCompleteSettings
import de.kuschku.quasseldroid.settings.BacklogSettings
import de.kuschku.quasseldroid.settings.ConnectionSettings
import de.kuschku.quasseldroid.util.helper.sharedPreferences
import de.kuschku.quasseldroid.settings.Settings
@Module
class SettingsModule {
@Provides
fun provideAppearanceSettings(context: Context) = context.sharedPreferences {
AppearanceSettings(
theme = AppearanceSettings.Theme.of(
getString(
context.getString(R.string.preference_theme_key),
""
)
) ?: AppearanceSettings.DEFAULT.theme,
useMonospace = getBoolean(
context.getString(R.string.preference_monospace_key),
AppearanceSettings.DEFAULT.useMonospace
),
textSize = getInt(
context.getString(R.string.preference_textsize_key),
AppearanceSettings.DEFAULT.textSize
),
showSeconds = getBoolean(
context.getString(R.string.preference_show_seconds_key),
AppearanceSettings.DEFAULT.showSeconds
),
use24hClock = getBoolean(
context.getString(R.string.preference_use_24h_clock_key),
AppearanceSettings.DEFAULT.use24hClock
),
showPrefix = AppearanceSettings.ShowPrefixMode.of(
getString(
context.getString(R.string.preference_show_prefix_key),
""
)
) ?: AppearanceSettings.DEFAULT.showPrefix,
colorizeNicknames = AppearanceSettings.ColorizeNicknamesMode.of(
getString(
context.getString(R.string.preference_colorize_nicknames_key),
""
)
) ?: AppearanceSettings.DEFAULT.colorizeNicknames,
inputEnter = AppearanceSettings.InputEnterMode.of(
getString(
context.getString(R.string.preference_input_enter_key),
""
)
) ?: AppearanceSettings.DEFAULT.inputEnter,
colorizeMirc = getBoolean(
context.getString(R.string.preference_colorize_mirc_key),
AppearanceSettings.DEFAULT.colorizeMirc
),
showHostmask = getBoolean(
context.getString(R.string.preference_hostmask_key),
AppearanceSettings.DEFAULT.showHostmask
),
showLag = getBoolean(
context.getString(R.string.preference_show_lag_key),
AppearanceSettings.DEFAULT.showLag
)
)
}
fun provideAppearanceSettings(context: Context) = Settings.appearance(context)
@Provides
fun provideAutoCompleteSettings(context: Context) = context.sharedPreferences {
AutoCompleteSettings(
button = getBoolean(
context.getString(R.string.preference_autocomplete_button_key),
AutoCompleteSettings.DEFAULT.button
),
doubleTap = getBoolean(
context.getString(R.string.preference_autocomplete_doubletap_key),
AutoCompleteSettings.DEFAULT.button
),
auto = getBoolean(
context.getString(R.string.preference_autocomplete_auto_key),
AutoCompleteSettings.DEFAULT.button
),
prefix = getBoolean(
context.getString(R.string.preference_autocomplete_prefix_key),
AutoCompleteSettings.DEFAULT.button
)
)
}
fun provideAutoCompleteSettings(context: Context) = Settings.autoComplete(context)
@Provides
fun provideBacklogSettings(context: Context) = context.sharedPreferences {
BacklogSettings(
pageSize = getString(
context.getString(R.string.preference_page_size_key),
BacklogSettings.DEFAULT.pageSize.toString()
).toIntOrNull() ?: BacklogSettings.DEFAULT.pageSize,
initialAmount = getString(
context.getString(R.string.preference_initial_amount_key),
BacklogSettings.DEFAULT.initialAmount.toString()
).toIntOrNull() ?: BacklogSettings.DEFAULT.initialAmount
)
}
fun provideBacklogSettings(context: Context) = Settings.backlog(context)
@Provides
fun provideConnectionSettings(context: Context) = context.sharedPreferences {
ConnectionSettings(
showNotification = getBoolean(
context.getString(R.string.preference_show_notification_key),
ConnectionSettings.DEFAULT.showNotification
)
)
}
fun provideConnectionSettings(context: Context) = Settings.connection(context)
}
\ No newline at end of file
......@@ -63,6 +63,27 @@ object Settings {
)
}
fun autoComplete(context: Context) = context.sharedPreferences {
AutoCompleteSettings(
button = getBoolean(
context.getString(R.string.preference_autocomplete_button_key),
AutoCompleteSettings.DEFAULT.button
),
doubleTap = getBoolean(
context.getString(R.string.preference_autocomplete_doubletap_key),
AutoCompleteSettings.DEFAULT.button
),
auto = getBoolean(
context.getString(R.string.preference_autocomplete_auto_key),
AutoCompleteSettings.DEFAULT.button
),
prefix = getBoolean(
context.getString(R.string.preference_autocomplete_prefix_key),
AutoCompleteSettings.DEFAULT.button
)
)
}
fun backlog(context: Context) = context.sharedPreferences {
BacklogSettings(
pageSize = getString(
......
......@@ -35,6 +35,7 @@ import de.kuschku.libquassel.util.or
import de.kuschku.quasseldroid.Keys
import de.kuschku.quasseldroid.R
import de.kuschku.quasseldroid.persistence.QuasselDatabase
import de.kuschku.quasseldroid.settings.Settings
import de.kuschku.quasseldroid.ui.chat.input.Editor
import de.kuschku.quasseldroid.ui.chat.input.MessageHistoryAdapter
import de.kuschku.quasseldroid.ui.settings.app.AppSettingsActivity
......@@ -111,6 +112,7 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
viewModel.lastWord,
findViewById(R.id.chatline),
findViewById(R.id.send),
findViewById(R.id.tab_complete),
listOf(
findViewById(R.id.autocomplete_list),
findViewById(R.id.autocomplete_list_expanded)
......@@ -255,6 +257,13 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
editorPanel.panelState = SlidingUpPanelLayout.PanelState.COLLAPSED
}
override fun onStart() {
if (Settings.autoComplete(this) != autoCompleteSettings) {
recreate()
}
super.onStart()
}
data class AutoCompletionState(
val originalWord: String,
val range: IntRange,
......
......@@ -19,6 +19,7 @@ import de.kuschku.quasseldroid.ui.chat.ChatActivity
import de.kuschku.quasseldroid.util.helper.lastWordIndices
import de.kuschku.quasseldroid.util.helper.lineSequence
import de.kuschku.quasseldroid.util.helper.retint
import de.kuschku.quasseldroid.util.helper.visibleIf
import de.kuschku.quasseldroid.viewmodel.data.AutoCompleteItem
import io.reactivex.Observable
import io.reactivex.subjects.BehaviorSubject
......@@ -32,6 +33,7 @@ class Editor(
// Views
val chatline: AppCompatEditText,
send: AppCompatImageButton,
tabComplete: AppCompatImageButton,
autoCompleteLists: List<RecyclerView>,
formattingMenu: ActionMenuView,
formattingToolbar: Toolbar,
......@@ -158,6 +160,11 @@ class Editor(
}
}
tabComplete.visibleIf(autoCompleteSettings.button)
tabComplete.setOnClickListener {
autoComplete()
}
lastWordContainer.onNext(lastWord)
activity.menuInflater.inflate(formatHandler.menu, formattingMenu.menu)
......
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24"
android:viewportWidth="24">
<path
android:fillColor="#000"
android:pathData="M20,18H22V6H20M11.59,7.41L15.17,11H1V13H15.17L11.59,16.58L13,18L19,12L13,6L11.59,7.41Z" />
</vector>
\ No newline at end of file
......@@ -4,6 +4,19 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.AppCompatImageButton
android:id="@+id/tab_complete"
style="?attr/buttonStyleSmall"
android:layout_width="?attr/actionBarSize"
android:layout_height="?attr/actionBarSize"
android:layout_gravity="top"
android:background="?attr/selectableItemBackgroundBorderless"
android:padding="12dp"
android:scaleType="fitXY"
app:tint="?attr/colorTextSecondary"
app:layout_constraintStart_toStartOf="parent"
app:srcCompat="@drawable/ic_tab" />
<ScrollView
android:id="@+id/chatline_scroller"
android:layout_width="0dp"
......@@ -11,7 +24,7 @@
app:layout_constraintBottom_toTopOf="@+id/autocomplete_list_expanded"
app:layout_constraintEnd_toStartOf="@+id/send"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintStart_toEndOf="@+id/tab_complete"
app:layout_constraintTop_toTopOf="parent">
<android.support.v7.widget.AppCompatEditText
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment