Implement adding new accounts

This commit is contained in:
Bilal Elmoussaoui 2019-09-03 14:45:04 +02:00
parent 28571c7939
commit f03eed607e
4 changed files with 33 additions and 13 deletions

View file

@ -20,6 +20,15 @@ flatpak:
# Build the flatpak repo
- flatpak-builder --run app ${MANIFEST_PATH} meson --prefix=/app ${MESON_ARGS} _build
- flatpak-builder --run app ${MANIFEST_PATH} ninja -C _build install
# Run tests
- >
xvfb-run -a -s "-screen 0 1024x768x24"
flatpak build
--env=LANG=C.UTF-8
--env=NO_AT_BRIDGE=1
app
dbus-run-session
meson test -C _build --no-stdsplit --print-errorlogs
# Create a flatpak bundle
- flatpak-builder --finish-only app ${MANIFEST_PATH}
@ -73,6 +82,7 @@ rustfmt:
# Create blank versions of our configured files
# so rustfmt does not yell about non-existent files or completely empty files
- echo -e "" >> src/config.rs
- echo -e "" >> src/static_resources.rs
- rustc -Vv && cargo -Vv
- cargo fmt --version
- cargo fmt --all -- --color=always --check

View file

@ -3,20 +3,11 @@
<interface>
<requires lib="gtk+" version="3.22"/>
<requires lib="libhandy" version="0.0"/>
<object class="GtkListStore" id="providers_store">
<columns>
<!-- column-name id -->
<column type="guint"/>
<!-- column-name name -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkEntryCompletion" id="provider_completion">
<property name="model">providers_store</property>
<property name="text_column">1</property>
<property name="inline_selection">True</property>
<child>
<object class="GtkCellRendererText" id="epithet_completion_renderer"/>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">1</attribute>
</attributes>
@ -146,7 +137,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="model">providers_store</property>
<property name="has_entry">True</property>
<property name="entry_text_column">1</property>
<property name="id_column">0</property>

View file

@ -33,7 +33,7 @@ fn init_pool() -> Result<Pool, Error> {
File::create(&db_path.to_str().unwrap())?;
}
let manager = ConnectionManager::<SqliteConnection>::new(db_path.to_str().unwrap());
let pool = r2d2::Pool::builder().max_size(1).build(manager)?;
let pool = r2d2::Pool::builder().build(manager)?;
{
let db = pool.get()?;

View file

@ -22,6 +22,7 @@ impl AddAccountDialog {
add_account_dialog.setup_actions(add_account_dialog.clone());
add_account_dialog.setup_signals();
add_account_dialog.setup_widgets();
add_account_dialog
}
@ -86,11 +87,12 @@ impl AddAccountDialog {
let builder = &add_account_dialog.builder;
let username_entry: gtk::Entry = builder.get_object("username_entry").expect("Failed to retrieve username_entry");
let token_entry: gtk::Entry = builder.get_object("token_entry").expect("Failed to retrieve token_entry");
let provider_combobox: gtk::ComboBox = builder.get_object("provider_combobox").expect("Failed to retrieve provider_combobox");
let new_account = NewAccount {
username: username_entry.get_text().unwrap().to_string(),
token_id: token_entry.get_text().unwrap().to_string(),
provider: 1,
provider: provider_combobox.get_active_id().unwrap().parse::<i32>().unwrap(),
};
if let Err(err) = add_account_dialog.add_account(new_account) {
add_account_dialog.notify_err("Failed to add a new account");
@ -110,4 +112,22 @@ impl AddAccountDialog {
actions.add_action(&scan_qr);
self.widget.insert_action_group("add", Some(&actions));
}
fn setup_widgets(&self) {
// Fill the providers gtk::ListStore
let col_types: [gtk::Type; 2] = [gtk::Type::String, gtk::Type::String];
let providers_store = gtk::ListStore::new(&col_types);
if let Ok(providers) = database::get_providers() {
for provider in providers.iter() {
let values: [&dyn ToValue; 2] = [&provider.id, &provider.name];
providers_store.set(&providers_store.append(), &[0, 1], &values);
}
}
let provider_completion: gtk::EntryCompletion = self.builder.get_object("provider_completion").expect("Failed to retrieve provider_completion");
let provider_combobox: gtk::ComboBox = self.builder.get_object("provider_combobox").expect("Failed to retrieve provider_combobox");
provider_combobox.set_model(Some(&providers_store));
provider_completion.set_model(Some(&providers_store));
}
}