accounts: add account reordering feature

Refs #67077

Change-Id: I41b148143e433e0224e4259ea9ebf27605222083
diff --git a/AccountsVC.mm b/AccountsVC.mm
index bcae14c..80a198b 100644
--- a/AccountsVC.mm
+++ b/AccountsVC.mm
@@ -161,11 +161,20 @@
     [self.ringTabItem setView:self.ringVC.view];
 }
 
+- (IBAction)moveUp:(id)sender {
+    AccountModel::instance()->moveUp();
+}
+
+- (IBAction)moveDown:(id)sender {
+    AccountModel::instance()->moveDown();
+}
+
 - (IBAction)removeAccount:(id)sender {
 
     if(treeController.selectedNodes.count > 0) {
         QModelIndex qIdx = [treeController toQIdx:[treeController selectedNodes][0]];
         AccountModel::instance()->remove(qIdx);
+        AccountModel::instance()->save();
     }
 }
 - (IBAction)addAccount:(id)sender {
@@ -175,6 +184,7 @@
                 AccountModel::instance()->protocolModel()->data(qIdx, Qt::DisplayRole).toString().toNSString(), nil];
 
     Account* newAcc =AccountModel::instance()->add([newAccName UTF8String], qIdx);
+    AccountModel::instance()->save();
 }
 
 - (IBAction)protocolSelectedChanged:(id)sender {
@@ -336,6 +346,7 @@
     if([[treeController selectedNodes] count] > 0) {
         QModelIndex qIdx = [treeController toQIdx:[treeController selectedNodes][0]];
         //Update details view
+        AccountModel::instance()->selectionModel()->setCurrentIndex(qIdx, QItemSelectionModel::ClearAndSelect);
         Account* acc = AccountModel::instance()->getAccountByModelIndex(qIdx);
 
             switch (acc->protocol()) {
@@ -359,6 +370,7 @@
         [self.accountDetailsView setHidden:NO];
     } else {
         [self.accountDetailsView setHidden:YES];
+        AccountModel::instance()->selectionModel()->clearCurrentIndex();
     }
 }