accounts: add proxy model on account protocols
Refs #67077
Change-Id: If6a1f50e1d9fd22e3dd397fa654ccdb95cc791e2
diff --git a/AccountsVC.mm b/AccountsVC.mm
index ed3a95a..bcae14c 100644
--- a/AccountsVC.mm
+++ b/AccountsVC.mm
@@ -49,6 +49,20 @@
#import "AccSecurityVC.h"
#import "AccRingVC.h"
+// We disabled IAX protocol for now, so don't show it to the user
+class ActiveProtocolModel : public QSortFilterProxyModel
+{
+public:
+ ActiveProtocolModel(QAbstractItemModel* parent) : QSortFilterProxyModel(parent)
+ {
+ setSourceModel(parent);
+ }
+ virtual bool filterAcceptsRow(int source_row, const QModelIndex& source_parent) const
+ {
+ return sourceModel()->index(source_row,0,source_parent).flags() & Qt::ItemIsEnabled;
+ }
+};
+
@interface AccountsVC ()
@property (assign) IBOutlet NSPopUpButton *protocolList;
@@ -61,6 +75,7 @@
@property (retain) IBOutlet NSTabViewItem *ringTabItem;
@property QNSTreeController *treeController;
+@property ActiveProtocolModel* proxyProtocolModel;
@property (assign) IBOutlet NSOutlineView *accountsListView;
@property (assign) IBOutlet NSTabView *accountDetailsView;
@@ -85,14 +100,7 @@
@synthesize accountsListView;
@synthesize accountDetailsView;
@synthesize treeController;
-
-- (id)initWithCoder:(NSCoder *)aDecoder
-{
- if (self = [super initWithCoder:aDecoder]) {
- NSLog(@"INIT Accounts VC");
- }
- return self;
-}
+@synthesize proxyProtocolModel;
- (void)awakeFromNib
{
@@ -117,6 +125,7 @@
});
+ self.proxyProtocolModel = new ActiveProtocolModel(AccountModel::instance()->protocolModel());
QModelIndex qProtocolIdx = AccountModel::instance()->protocolModel()->selectionModel()->currentIndex();
[self.protocolList addItemWithTitle:
AccountModel::instance()->protocolModel()->data(qProtocolIdx, Qt::DisplayRole).toString().toNSString()];
@@ -157,13 +166,12 @@
if(treeController.selectedNodes.count > 0) {
QModelIndex qIdx = [treeController toQIdx:[treeController selectedNodes][0]];
AccountModel::instance()->remove(qIdx);
- AccountModel::instance()->save();
}
}
- (IBAction)addAccount:(id)sender {
QModelIndex qIdx = AccountModel::instance()->protocolModel()->selectionModel()->currentIndex();
- NSString* newAccName = [[NSString alloc] initWithFormat:@"New %@ account",
+ NSString* newAccName = [[NSString alloc] initWithFormat:@"%@ account",
AccountModel::instance()->protocolModel()->data(qIdx, Qt::DisplayRole).toString().toNSString(), nil];
Account* newAcc =AccountModel::instance()->add([newAccName UTF8String], qIdx);
@@ -172,8 +180,9 @@
- (IBAction)protocolSelectedChanged:(id)sender {
int index = [sender indexOfSelectedItem];
+ QModelIndex proxyIdx = proxyProtocolModel->index(index, 0);
AccountModel::instance()->protocolModel()->selectionModel()->setCurrentIndex(
- AccountModel::instance()->protocolModel()->index(index), QItemSelectionModel::ClearAndSelect);
+ proxyProtocolModel->mapToSource(proxyIdx), QItemSelectionModel::ClearAndSelect);
}
@@ -357,7 +366,8 @@
- (BOOL)menu:(NSMenu *)menu updateItem:(NSMenuItem *)item atIndex:(NSInteger)index shouldCancel:(BOOL)shouldCancel
{
- QModelIndex qIdx = AccountModel::instance()->protocolModel()->index(index);
+ QModelIndex proxyIdx = proxyProtocolModel->index(index, 0);
+ QModelIndex qIdx = AccountModel::instance()->protocolModel()->index(proxyProtocolModel->mapToSource(proxyIdx).row());
[item setTitle:AccountModel::instance()->protocolModel()->data(qIdx, Qt::DisplayRole).toString().toNSString()];
return YES;
@@ -365,7 +375,7 @@
- (NSInteger)numberOfItemsInMenu:(NSMenu *)menu
{
- return AccountModel::instance()->protocolModel()->rowCount();
+ return proxyProtocolModel->rowCount();
}